2010-07-16 2 views
0

J'ai réussi à héberger le CLR 2.0 dans une application Delphi win32 qui était capable de créer et d'héberger des contrôles WPF dans un contrôle Delphi, quelque chose de similaire au ElementHost pour les applications WinForms.Impossible de créer un WPF UserControl dans une application d'hébergement hébergé Clr 4.0 en raison d'une erreur stackoverflow

Maintenant, je veux déplacer ma solution vers le CLR 4.0 et tout fonctionne bien sauf lorsque j'essaie de créer un UserControl qui a une ressource Xaml associée. Dans ce cas, il provoque une erreur stackoverflow qui force le processus à sortir! Mais si je crée des contrôles WPF par code (sans lire xaml) alors tout fonctionne bien!

j'ai réussi à l'étape dans le code-cadre jusqu'à ce que je suis entré dans la méthode XamlReader.LoadBaml, qui est écrasé juste après l'exécution du code suivant:

  // 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; 
        } 
       } 
      } 

Notez que les ensembles chargés utilisent Clr4 aussi.

Merci pour votre aide,

Morgan

+0

Bonjour à tous! Je suis un peu novice à la pratique d'héberger des applications .net en Delphi en hébergeant le CLR et ce genre de choses, le fait est que j'ai trouvé curieux que vous ayez mentionné quelque chose similaire à ElementHost dans WinForms pour créer et héberger des éléments WPF dans Delphi .. Maintenant, mon intérêt est dans WinForms, y at-il une documentation pour m'aider à réaliser ce que je veux sans avoir besoin de Hydra 4? –

Répondre

0

J'ai trouvé le problème grâce à un autre poste sur Stackoveflow (Hosting CLR in Delphi with/without JCL - example voir Remarque importante).

J'ai dû initialiser le fpu avec Set8087CW (133F), puis le stackoverlow étranges arrêté! J'ai encore un comportement étrange: tout va bien sans débogueur, mais si je lance l'application de VS2010, un formulaire wpf noir est affiché, ce qui m'empêche d'interagir avec le contenu. Cependant, si je lance l'application puis attacher avec le débogueur alors tout va bien!

Questions connexes