Cosa potrebbe causare la chiusura improvvisa di un'app .NET WinForms senza una finestra di dialogo?

StackOverflow https://stackoverflow.com/questions/201614

  •  03-07-2019
  •  | 
  •  

Domanda

È stato segnalato che la nostra applicazione WinForms si chiude di tanto in tanto da sola. Non mostra né la nostra finestra di dialogo di invio dell'errore di crash né la finestra di dialogo di invio dell'errore di Windows, si chiude e scompare, spesso quando la persona era afk e non stava facendo nulla con l'applicazione. Sembra essere un evento semi-raro, forse 2-3 volte al mese, ed è successo a più di una persona. Non ho idea di dove iniziare a ottenere un caso di riprogrammazione o dove iniziare a rintracciarlo.

C # .NET 2.0 I casi segnalati sono su Win XP

Qualcuno ha qualche idea?

È stato utile?

Soluzione

Gli overflow dello stack dovuti alla ricorsione infinita sono una grande causa di chiusura delle app senza preavviso. A meno che tu non abbia fatto qualcosa di deliberato per provocare un'uscita silenziosa, le eccezioni non gestite (diverse dallo stack overflow) normalmente visualizzeranno un tipo di interfaccia utente prima che l'app si chiuda. Stack Overflow è l'eccezione più comune (oops, scusa) a questa regola.

Naturalmente, dal codice non gestito o non sicuro è quasi certamente possibile sconvolgere il runtime nel modo giusto per provocare un'uscita silenziosa.

Anche i suggerimenti sulla strumentazione e sul registro degli eventi di Windows sono buoni.

Altri suggerimenti

Le eccezioni causano la scomparsa di un'app "quotazione". Controlla i registri degli eventi per vedere se c'era qualcosa.

Controlla il task manager per vedere se il processo è ancora presente quando la finestra scompare. Ho avuto l'esplosione di Explorer e non riesco a ridisegnare la finestra fino a quando non è stato Alt-Tabbed o Switched-To (dal task manager).

Non dimenticare agli utenti di dimenticare che stanno chiudendo l'app. È possibile che si desideri inserire una logica di registrazione nell'app per registrare le chiusure avviate dall'utente. La prossima volta che "scompare" puoi controllare eventuali voci del registro.

Potresti aggiungere un po 'di logica nell'evento FormClosing per chiedere all'utente se è quello che vogliono veramente fare, puoi quindi annullare l'evento di chiusura e la tua applicazione continuerà a funzionare se tutto va bene. Se continui a notare questo problema e non esegue mai la tua logica, dovrai sporcarti le mani nel debugger.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top