2015-02-18 17 views
7

tôi bị sau thiết lập:Nhiều ứng dụng WPF trong AppDomain cùng

WPF_Application.exe

một DLL có chứa một Window WinForms và một cửa sổ WPF.

'WPF_Application.exe' gọi cửa sổ WinForms từ tệp DLL và cửa sổ WinForms tạo một phiên bản cửa sổ WPF trong tệp DLL.

Điều đó tạo ra ngoại lệ sau đây:

Không thể tạo nhiều hơn một ví dụ System.Windows.Application trong AppDomain cùng.

Đã thử nhiều thứ khác nhau, nhưng không thể tìm ra cách khắc phục.

Trả lời

11

tôi cố định nó bằng cách asigning việc áp dụng các cửa sổ WPF đó được gọi là cho Window Application.Current:

if (Application.Current == null) 
    { 
     MyApplication = new Application 
     { 
      ShutdownMode = ShutdownMode.OnExplicitShutdown 
     }; 
    } 
    else 
     MyApplication = Application.Current; 
+1

Cảm ơn vì điều này. Để đơn giản hóa: 'MyApplication = Application.Current ?? Ứng dụng mới {ShutdownMode = ShutdownMode.OnExplicitShutdown} ' –

3

System.Windows.Application là một singleton: hàm khởi tạo của nó chỉ được gọi một lần (bao gồm cả xáo trộn App.xaml) hoặc ngoại lệ được ném.

Tôi e rằng không có nhiều việc bạn có thể làm, ngoại trừ có thể kiểm tra xem Application.Current có được đặt trước khi bắt đầu ứng dụng thứ hai của bạn không, và phần nào sử dụng trường hợp đó để tải nó.

Hoặc bạn có thể tạo một AppDomain khác và sử dụng nó để khởi chạy ứng dụng thứ hai.

+0

Điều tôi đang chờ đợi thêm cho giá trị trả về từ các ứng dụng winforms. – JayTee

Các vấn đề liên quan