Verwalten asynchroner Aufgaben in C#/xaml Metro -Style -Apps
In C#/xaml Metro Style-Anwendungen ist es von entscheidender Bedeutung, asynchronen Langzeitvorgänge zu verhindern, um async
/await
zu verhindern, um die Einfrierzahlen von UI zu verhindern. Es entstehen jedoch Situationen, in denen die Pause und wieder aufgenommene Operationen auf der Grundlage der Benutzerinteraktion erforderlich ist.
semaphoreslim für ereignisgesteuerte Pausing
verwenden Die SemaphoreSlim
Klasse bietet eine elegante Lösung für die ereignisbasierte Aufhängung:
SemaphoreSlim
-Objekt mit einer anfänglichen Anzahl von 0 und einer maximalen Anzahl von 1: private SemaphoreSlim signal = new SemaphoreSlim(0, 1);
signal.Release();
GetResults
) warten Sie auf das Semaphor-Signal: await signal.WaitAsync();
TaskCompletionsource
Ein weiterer effektiver Ansatz beinhaltet die TaskCompletionSource<bool>
Klasse:
TaskCompletionSource<bool>
: private TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
tcs.SetResult(true);
await tcs.Task;
Vorteile einer ereignisgesteuerten Pause/Lebenslauf
Diese Methoden vermeiden die Ineffizienzen der Wahl, wodurch geschäftige Erweiterung und Ressourcenabfälle beseitigt werden. Durch die Verwendung von ereignisgesteuerten Mechanismen erreichen Sie eine effiziente Pause und nutzen die Funktionalität für langjährige asynchrone Aufgaben wieder.
Das obige ist der detaillierte Inhalt vonWie kann ich asynchrone Operationen in C#/XAML -Metro -Apps aussetzen und fortsetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!