Heim >Backend-Entwicklung >C++ >Wie kann ich auf ein Ereignis in einer async C# Metro -App -Methode warten?
Async Event -Handling in C# -Metro -Style -Apps: Eine saubere Lösung
asynchrones Programmieren ist für reaktionsschnelle C#/XAML -Metro -Apps von wesentlicher Bedeutung, wodurch UI -Einfrierungen während langwieriger Vorgänge verhindert werden. Es entstehen jedoch Situationen, in denen die Benutzerinteraktion mitten in der Verarbeitung benötigt wird. In diesem Artikel wird beschrieben
Die Herausforderung: Warten auf Benutzereingaben während asynchronischer Vorgänge
Stellen Sie sich ein Szenario vor: Eine Taste initiiert eine asynchrone -Methode. Für diese Methode wird möglicherweise Benutzereingabe (z. B. Klicken auf eine Schaltfläche "Fortsetzung") vor dem Fortfahren erfordern. Die Schlüsselfrage: Wie pause wir GetResults
, bis der Benutzer interagiert? GetResults
ineffiziente Umfrage: Eine Methode, um zu vermeiden
Ein simpeler (aber fehlerhafter) Ansatz beinhaltet ein Flag, das vom Ereignishandler der Taste "Fortsetzung" aktualisiert wird und wiederholt in mit GetResults
überprüft wird. Diese ständige Umfrage verschwendet Ressourcen und ist ineffizient. Task.Delay
Elegante ereignisbasierte Lösungen
c# bietet überlegene ereignisgesteuerte Lösungen:
1. Verwendung SemaphoreSlim
SemaphoreSlim
GetResults
. Dies blockiert die Ausführung, bis das Semaphor veröffentlicht wird. SemaphoreSlim.WaitAsync
2. Nutzung TaskCompletionSource
TaskCompletionSource<bool>
GetResults
. Die Ausführung hält an, bis die Aufgabe abgeschlossen ist. tcs.Task
Das obige ist der detaillierte Inhalt vonWie kann ich auf ein Ereignis in einer async C# Metro -App -Methode warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!