同一AppDomain中的多个WPF应用程序

时间:2015-02-18 14:55:43

标签: c# wpf winforms

我得到了以下设置:

WPF_Application.exe

包含WinForms窗口和WPF窗口的DLL。

'WPF_Application.exe'从DLL调用WinForms窗口,WinForms窗口在DLL中创建WPF窗口的实例。

这会产生以下异常:

  

无法在同一AppDomain中创建多个System.Windows.Application实例。

尝试了不同的事情,但无法弄清楚如何解决它。

3 个答案:

答案 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文件,则将导致此错误,并且该解决方案将生成,但失败运行时。

删除重复的应用程序,并使用WindowUserControl具有多个窗口。