Comincio la mia forma nel solito modo:Qual è il modo corretto per chiudere a livello di codice un'applicazione WinForm dopo un certo periodo?
Application.Run(new MainForm());
voglio che aprire e gestire fino ad un certo periodo di tempo, quindi chiudere. Ho provato quanto segue ma inutilmente:
(1) Nel metodo Main (erano l'Application.Run() affermazione è), entro nella seguente DOPO Application.Run()
while (DateTime.Now < Configs.EndService) { }
RISULTATO: Non viene mai colpito.
(2) PRIMA Application.Run() inizio un nuovo thread in background:
var thread = new Thread(() => EndServiceThread()) { IsBackground = true };
thread.Start();
dove EndServiceThread è:
public static void EndServiceThread()
{
while (DateTime.Now < Configs.EndService) { }
Environment.Exit(0);
}
RISULTATO: vshost32.exe ha smesso di incidente di lavoro.
(3) In MainForm Tick evento:
if (DateTime.Now > Configs.EndService)
{
this.Close();
//Environment.Exit(0);
}
RISULTATO: vshost32.exe ha smesso di incidente di lavoro.
Qual è il modo corretto per raggiungere il mio obiettivo? Ancora una volta, voglio avviare il modulo, averlo aperto & in esecuzione fino a una certa ora (Configs.EndService), quindi chiudere.
Grazie, Ben.
Dove vuoi aggiungere questo? In 'MainForm', dal momento che questo è il punto di partenza del sistema per il resto dell'applicazione? –
@Grant: Sì, posizionare il timer sul modulo principale. Imposta la sua proprietà 'Enabled' su' True', e il suo intervallo su qualsiasi intervallo di controllo temporale desiderato (1 secondo, 10 minuti, qualunque cosa). –