Ho un problema con una soluzione che sto cercando di sviluppare. Il mio scenario è questo: ho un'applicazione VB6 e vorrei riuscire a chiamare da questa applicazione alcune nuove finestre scritte in WPF. Ho usato l'Interop Form Library per definire una WinForm che funge da ponte tra VB6 e WPF. L'Interop WinForm espone i metodi per avviare ed arrestare l'applicazione WPF.
Per fare ciò, nell'applicazione WPF ho definito questa classe helper:
il metodo DispatchEvent gestisce l'esecuzione di eventi specifici come l'apertura di una finestra.
Per esempio, nell'Interop WinForm ho scritto queste istruzioni:
MyWpfApp.StartApplicationHelper.Start()
Do While MyWpfApp.StartApplicationHelper.IsReady = False
System.Windows.Forms.Application.DoEvents()
Loop
MyWpfApp.StartApplicationHelper.DispatchEvent("OpenWin1")
In questo modo posso definire un InteropFormMethod per aprire le finestre WPF da VB6 attraverso la Interop WinForm.
Questa soluzione sembra funzionare ma ho un problema con un particolare caso d'uso in cui l'applicazione wpf viene prima arrestata (shutdown) e poi riavviata (start); il messaggio di errore visualizato è: "Cannot create more than one System.Windows.Application instance in the same AppDomain".
Sto provando a modificare la mia classe helper per gestire questa situazione ma ancora non ho trovato una soluzione. Vorrei "ripulire" l'AppDomain per poter riavviare l'applicazione Wpf senza problemi.
Come posso fare? Avete qualche idea? Grazie.