我有一个遗留的delphi程序,想要添加一些用WPF实现的内容。因此,我使用.NET / ActiveX互操作技术封装了WPF控件。这意味着:
[ComRegisterFunction()]
public static void RegisterClass(string key);
[ComUnregisterFunction()]
public static void UnregisterClass(string key);
activeX组件是一个WinForms用户控件,WPF材料附加到此用户控件中的ElemenHost。
如果此ActiveX的主机应用程序即使没有/ clr开关也是MFC程序,它可以正常工作。但是我的遗留应用程序是一个delphi程序,它总是在程序启动时在我的WPF用户控件的构造函数的第一行引发stackoverflow异常。
异常显示的消息是:
An unhandled exception of type 'System.StackOverflowException' occurred in PresentationFramework.dll
我不知道,谷歌没有帮助。这让我困惑了好几天。
答案 0 :(得分:0)
哇!德尔福 - > ActiveX - > WinForms - > WPF。如果它确实有效,我会感到惊讶。
我的建议是完全放弃WinForms和ActiveX:
在WPF方面:
在Delphi方面:
如果你真的想尝试制作Delphi - > ActiveX - > WinForms - > WPF嵌套工作,我将首先在堆栈溢出时获取堆栈跟踪。这应该可以解决出错的问题并解决它。