У меня получилась следующая настройка:
WPF_Application.exe
А также
DLL, содержащая окно WinForms и окно WPF.
«WPF_Application.exe» вызывает окно WinForms из DLL, а окно WinForms создает экземпляр окна WPF в DLL.
Это создает следующее исключение:
Невозможно создать более одного экземпляра System.Windows.Application в одном домене приложения.
Пробовал разные вещи, но не мог понять, как это исправить.
3 ответа
Я исправил это, назначив Application окна wpf, которое вызывается окну Application.Current:
if (Application.Current == null)
{
MyApplication = new Application
{
ShutdownMode = ShutdownMode.OnExplicitShutdown
};
}
else
MyApplication = Application.Current;
Убедитесь, что в XAML определено только одно приложение.
Visual Studio создает App.xaml
при создании нового решения WPF. Если вы создали новый файл .xaml с тегом <Application></Application>
, это вызовет эту ошибку, и решение будет построено, но не удастся во время выполнения.
Удалите повторяющееся приложение и используйте Window
или UserControl
для создания нескольких окон.
System.Windows.Application - это синглтон: его конструктор должен быть вызван только один раз (включая де-xamlization App.xaml), иначе будет создано исключение.
Я боюсь, что вы мало что можете с этим поделать, кроме, возможно, проверки, установлен ли Application.Current перед запуском вашего второго приложения, и использовать этот экземпляр для его загрузки.
Или вы можете создать другой AppDomain и использовать его для запуска второго приложения.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.