我遇到了一個我正在嘗試開發的解決方案的問題。這是我的場景: 我有一個VB6應用程序,我會從這個應用程序調用一些WPF窗口。我已經使用Interop表單庫來定義WinForm,比如從VB6到WPF的橋樑。 Interop WinForm公開了啓動和關閉wpf應用程序的方法。從Windows窗體運行WPF應用程序
爲了做到這一點,在WPF應用程序,我定義的助手這樣的:
Public Class StartApplicationHelper
Public Shared Property IsReady As Boolean = False
Public Shared Event NotifyEvent As ValueEnterEventHandler
Public Shared Sub Start()
If System.Windows.Application.Current Is Nothing Then
Try
Dim myApp As Application = New Application
myApp.ShutdownMode = ShutdownMode.OnExplicitShutdown
myApp.InitializeComponent()
IsReady= True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
End Sub
Public Shared Sub Shutdown()
If System.Windows.Application.Current IsNot Nothing Then
System.Windows.Application.Current.Shutdown()
IsReady = False
End If
End Sub
Public Shared Sub DispatchEvent(ByVal eve As String)
If IsReady Then EventDispatcherService.DispatchEvent(eve, New EventDispatcherDataChildWin(String.Empty, Nothing, Nothing, False))
End Sub
Public Shared Sub DispatchResult(ByVal res As Object)
RaiseEvent NotifyEvent(Nothing, New ValueEnterEventArgs(res))
End Sub
End Class
方法DispatchEvent管理就像一個應用程序窗口的開幕執行特定事件。
例如,在WinForm的我已經寫了這個聲明:
MyWpfApp.StartApplicationHelper.Start()
Do While MyWpfApp.StartApplicationHelper.IsReady = False
System.Windows.Forms.Application.DoEvents()
Loop
MyWpfApp.StartApplicationHelper.DispatchEvent("OpenWin1")
這樣我可以定義一個InteropFormMethod到來自全國各地的互操作的WinForm VB6打開WPF窗口
。
此解決方案似乎工作,但我有一個wpf應用程序停止(關機),然後重新啓動(開始)的特定用例的問題。這是顯示的錯誤消息:「不能在同一AppDomain中創建多個System.Windows.Application實例」。
我想修改我的幫手來管理這種情況,但我仍然沒有找到解決方案。我會清理AppDomain以重新啓動wpf應用程序。 我該怎麼辦?你可以幫我嗎?