我得到了以下设置:
WPF_Application.exe
和
包含WinForms窗口和WPF窗口的DLL。
'WPF_Application.exe'从DLL调用WinForms窗口,WinForms窗口在DLL中创建WPF窗口的实例。
这会产生以下异常:
无法在同一AppDomain中创建多个System.Windows.Application实例。
尝试了不同的事情,但无法弄清楚如何解决它。
答案 0 :(得分:12)
我通过将调用的wpf窗口的应用程序设置为Application.Current Window来修复它:
if (Application.Current == null)
{
MyApplication = new Application
{
ShutdownMode = ShutdownMode.OnExplicitShutdown
};
}
else
MyApplication = Application.Current;
答案 1 :(得分:3)
System.Windows.Application是一个单例:它的构造函数只能调用一次(包括App.xaml de-xamlization),否则抛出异常。
我很担心你可以做的事情不多,除非在开始你的第二个应用程序之前检查是否设置了Application.Current,并且稍微使用该实例加载它。
或者您可以创建另一个AppDomain,并使用它来启动第二个应用程序。
答案 2 :(得分:0)
确保在XAML中仅定义了一个应用程序。
Visual Studio在制作新的WPF解决方案时会创建一个App.xaml
,如果您创建了一个带有<Application></Application>
标签的新.xaml文件,则将导致此错误,并且该解决方案将生成,但失败运行时。
删除重复的应用程序,并使用Window
或UserControl
具有多个窗口。