Note that there are some explanatory texts on larger screens.

plurals
  1. PORun WPF Application from a Windows Form
    text
    copied!<p>I have a problem with a solution that I'm trying to develope. This is my scenario: I have a VB6 application and I would call from this application some WPF windows. I've used the Interop Form Library to define a WinForm like a bridge from VB6 to WPF. The Interop WinForm exposes the methods to start and shutdown the wpf application.</p> <p>To do that, in the WPF Application I've defined an helper like this:</p> <pre><code>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 </code></pre> <p>the method DispatchEvent manage the execute of specific event like the opening of an application window.</p> <p>For example, on winform I've wrote this statements:</p> <pre><code> MyWpfApp.StartApplicationHelper.Start() Do While MyWpfApp.StartApplicationHelper.IsReady = False System.Windows.Forms.Application.DoEvents() Loop MyWpfApp.StartApplicationHelper.DispatchEvent("OpenWin1") </code></pre> <p>in this way I can define an InteropFormMethod to open wpf window from VB6 across the Interop WinForm.</p> <p>This solution seems work but I have a problem with a particular use case where the wpf application are stopped (shutdown) and then restarted (start). This is the displayed error message: "Cannot create more than one System.Windows.Application instance in the same AppDomain".</p> <p>I'm trying to modify my helper to manage this case but I still have not found a solution. I would clean the AppDomain to restart wpf application. How can I do? Can you help me?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload