Recentemente ho cambiato la mia app dall'utilizzo di uno SplashScreen personalizzato (era solo un Modulo con un Timer che caricava il modulo principale e si chiudeva da solo) in Application Framework.VB.net ApplicationFramework plus SplashScreen: InvalidOperationException
Ecco quello che ho fatto:
- creato una nuova SplashScreenForm che mostra la versione app ecc
- selezionate che si formano a: Il mio progetto -> Applicazioni -> SplashScreen
- Mosso inizializzazione lunga corsa codice dal costruttore del modulo principale all'evento di avvio di ApplicationEvents
Ciò che fa completamente ciò che voglio. SplashScreen viene visualizzato per primo, e l'evento di avvio si attiva e funziona. SplashScreen si chiude e vengono visualizzate le forme principali effettive.
Fin qui tutto bene. Ma i nostri clienti a volte ottengono questa brutta eccezione durante l'avvio:
System.InvalidOperationException: Invoke oder BeginInvoke kann für ein Steuerelement erst aufgerufen werden, wenn das Fensterhandle erstellt wurde.
bei System.Windows.Forms.Control.WaitForWaitHandle(WaitHandle waitHandle)
bei System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
bei System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
bei System.Windows.Forms.Control.Invoke(Delegate method)
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.HideSplashScreen()
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.MainFormLoadingDone(Object sender, EventArgs e)
bei System.EventHandler.Invoke(Object sender, EventArgs e)
bei System.Windows.Forms.Form.OnLoad(EventArgs e)
bei System.Windows.Forms.Form.OnCreateControl()
bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
bei System.Windows.Forms.Control.CreateControl()
bei System.Windows.Forms.Control.WmShowWindow(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.Form.WmShowWindow(Message& m)
bei System.Windows.Forms.Form.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Sembra che ci sia un errore durante HideSplashScreen(), ma la cosa è che l'intero stack è fuori dal mio controllo, quindi non posso solo prendere questo eccezione.
Qualche suggerimento?
Sei in grado di riprodurre il problema? – Shimmy
Qualche aggiornamento su questo problema? Sto ancora ricevendo lo stesso problema. Grazie. –
Ho aggiunto questa riga all'avvio del mio evento ApplicationStartup: 'MinimumSplashScreenDisplayTime = 3000' e finora non ho avuto questa eccezione. Ma dal momento che questa esecuzione è totalmente casuale, non posso dire con certezza se ciò sia stato di aiuto. –