Omars Lösung anständig * ist, wenn Sie nicht Ihre Umgebung .NET 4.5, um zu gewinnen, aktualisieren Zugriff auf die asynchronen und abwartenden APIs. Das heißt, hier ist eine wichtige Änderung, die vorgenommen werden sollte, um eine schlechte Leistung zu vermeiden. Zwischen den Aufrufen von Application.DoEvents() sollte eine geringfügige Verzögerung hinzugefügt werden, um übermäßige CPU-Auslastung zu vermeiden. Durch die Zugabe von
Thread.Sleep(1);
vor dem Aufruf von Application.DoEvents() können Sie eine solche Verzögerung (1 Millisekunde) hinzufügen und die Anwendung verhindern, dass alle CPU-Zyklen zur Verfügung, um es verwenden.
private void WaitNSeconds(int seconds)
{
if (seconds < 1) return;
DateTime _desired = DateTime.Now.AddSeconds(seconds);
while (DateTime.Now < _desired) {
Thread.Sleep(1);
System.Windows.Forms.Application.DoEvents();
}
}
* Siehe https://blog.codinghorror.com/is-doevents-evil/ für eine ausführlichere Diskussion über die möglichen Gefahren von Application.DoEvents() verwenden.
Können wir ein Beispiel sehen, was Sie meinen? Das ist sehr breit. – gunr2171
Gibt es außerdem eine Art von Anwendung, die Sie erstellen? Eine Konsole, WPF, Winforms, ASP.NET App oder etwas anderes? – jstromwick
Möchten Sie immer X Sekunden auf das Ereignis warten oder können Sie eine Operation ausführen, sobald das Ereignis kommt und eine andere Operation ausführen, wenn das Ereignis nicht innerhalb von X Sekunden, d. H. Wie eine Zeitüberschreitung, eintritt? – alsed42