ich meine Form in der üblichen Art und Weise beginnen:Was ist der richtige Weg, eine WinForms-Anwendung nach einer bestimmten Zeit programmgesteuert zu schließen?
Application.Run(new MainForm());
ich es, bis eine bestimmte Zeit geöffnet werden soll und laufen, dann schließen. Ich habe das versucht, folgende, aber ohne Erfolg:
(1) in der Methode Main (waren die Application.Run() Aussage ist), habe ich folgendes eingeben NACH Application.Run()
while (DateTime.Now < Configs.EndService) { }
Ergebnis: Es wird nie getroffen.
(2) VOR Application.Run() Ich beginne einen neuen Hintergrund-Thread:
var thread = new Thread(() => EndServiceThread()) { IsBackground = true };
thread.Start();
wo EndServiceThread ist:
public static void EndServiceThread()
{
while (DateTime.Now < Configs.EndService) { }
Environment.Exit(0);
}
ERGEBNIS: vshost32.exe gestoppt hat Crash arbeiten.
(3) In Mainform Tick Veranstaltung:
if (DateTime.Now > Configs.EndService)
{
this.Close();
//Environment.Exit(0);
}
ERGEBNIS: vshost32.exe hat Arbeits Absturz gestoppt.
Was ist der richtige Weg, um mein Ziel zu erreichen? Nochmals, ich möchte das Formular starten, lassen Sie es öffnen & läuft bis zu einer bestimmten Zeit (Configs.EndService), dann schließen.
Vielen Dank, Ben.
Wo schließen würdest du das hinzufügen? In 'MainForm', denn das ist der Startpunkt für den Rest der Anwendung? –
@Grant: Ja, legen Sie den Timer auf das Hauptformular. Setzen Sie die Eigenschaft 'Enabled' auf 'True' und das Intervall auf das von Ihnen gewünschte Zeitintervall (1 Sekunde, 10 Minuten, was auch immer). –