Es ist klar: Stellen Sie sich zum Beispiel eine Schaltfläche in meiner Form vor. Wenn der Benutzer auf die Schaltfläche klickt, sollte nach 30 Sekunden eine void-Methode ausgeführt werden.Wie starte ich eine Methode nach einem bestimmten Zeitintervall?
Es wäre eine Void-Methode "DoAfterDelay", die 2 Eingaben benötigt, die erste ist die Methode zu tun (mit Delegaten), und die andere ist das Zeitintervall. Also ich werde haben:
public delegate void IVoidDelegate();
static void DoAfterDelay(IVoidDelegate TheMethod, TimeSpan Interval)
{
// *** Some code that will pause the process for "Interval".
TheMethod();
}
Also brauche ich nur ein Stück Code, um den Prozess für ein bestimmtes Zeitintervall zu pausieren. Bisher habe ich diesen Code zu tun:
System.Threading.Thread.Sleep(Interval);
Aber dieser Code ist nicht gut für mich, weil es ganzen Prozess beendet und friert das Programm. Ich möchte nicht, dass das Programm in der Methode "DoAfterDelay" hängen bleibt. Deshalb ist die Thread.Sleep
nutzlos.
Also könnte jemand einen besseren Weg vorschlagen? Natürlich habe ich danach gesucht, aber die meisten Lösungen, die ich gefunden habe, basieren auf der Verwendung eines Timers (wie zum Beispiel here). Aber die Verwendung eines Timers ist meine letzte Meinung, da die Methode einmal ausgeführt werden sollte und das Verwenden von Timern das Programm verwirrend zum Lesen macht. Also suche ich nach einer besseren Lösung, wenn es welche gibt. Oder muss ich vielleicht Timer verwenden?
Ich denke, ich muss mit Threads spielen, aber nicht sicher. Also frage ich mich, ob mich jemand zu einer Lösung führen könnte. Danke im Voraus.
versuchen mit einem 'Timer'. – Adrian