Не удается создать WPF UserControl в приложении для самостоятельного размещения Clr 4.0 из-за ошибки переполнения стека - PullRequest
0 голосов
/ 16 июля 2010

Мне удалось разместить CLR 2.0 в приложении Delphi win32, которое смогло создавать и размещать элементы управления WPF внутри элемента управления Delphi, что-то похожее на ElementHost для приложений WinForms.

Теперь я хочу переместить свое решение в CLR 4.0, и все работает отлично, за исключением случаев, когда я пытаюсь создать UserControl, который имеет связанный ресурс Xaml. В этом случае это вызывает ошибку переполнения стека, которая вынуждает процесс завершиться! Но если я создаю некоторые элементы управления WPF по коду (без чтения xaml), то все работает нормально!

Мне удалось войти в код фреймворка, пока я не вошел в метод XamlReader.LoadBaml , который вылетел сразу после выполнения следующего кода:

            // We don't actually use the GeneratedInternalTypeHelper any more.
            // But for v3 compat, don't allow loading of internals in PT unless there is one.
            Type internalTypeHelper = null;
            if (streamInfo.Assembly != null) 
            {
                try 
                { 
                    internalTypeHelper = XamlTypeMapper.GetInternalTypeHelperTypeFromAssembly(parserContext);
                } 
                // This can perform attribute reflection which will fail if the assembly has unresolvable
                // attributes. If that happens, just assume there is no helper.
                catch (Exception e)
                { 
                    if (MS.Internal.CriticalExceptions.IsCriticalException(e))
                    { 
                        throw; 
                    }
                } 
            }

Обратите внимание, что загруженные сборки также используют CLR4.

Спасибо за вашу помощь,

Morgan

1 Ответ

0 голосов
/ 20 июля 2010

Я обнаружил проблему благодаря другому сообщению о Stackoveflow ( Размещение CLR в Delphi с / без JCL - пример см. Важное примечание).

Мне пришлось инициализировать fpu с помощью Set8087CW ($ 133F) затем странный стекопоток прекратился!

У меня все еще странное поведение: все нормально без отладчика, но если я запускаю приложение из VS2010, то отображается черная форма wpf, не позволяющая мне взаимодействовать ссодержимое.Однако, если я запускаю приложение, затем присоединяюсь к отладчику, тогда все в порядке!

...