menjeda operasi asynchronous menunggu input pengguna dalam aplikasi UWP
Panduan ini menunjukkan bagaimana untuk sementara menghentikan pelaksanaan kaedah asynchronous dalam aplikasi Windows Platform (UWP) universal sehingga peristiwa tertentu, seperti klik butang, dicetuskan. Ini amat berguna apabila proses asynchronous jangka panjang ( dalam contoh ini) memerlukan interaksi pengguna sebelum meneruskan. GetResults
Kaedah 1: Menggunakan sebagai isyarat SemaphoreSlim
menawarkan mekanisme isyarat mudah. Inilah cara melaksanakannya: SemaphoreSlim
<code class="language-csharp">private SemaphoreSlim signal = new SemaphoreSlim(0, 1); // Initially 0 permits, max 1 // Event handler to release the semaphore private void buttonContinue_Click(object sender, RoutedEventArgs e) { signal.Release(); } // Asynchronous method pausing for the signal private async Task GetResults() { // ... Perform lengthy operations ... await signal.WaitAsync(); // Pause until the signal is released // ... Continue execution after the event ... }</code>
Kaedah 2: memanfaatkan TaskCompletionSource<bool>
menyediakan pendekatan yang lebih fleksibel dengan membuat TaskCompletionSource<bool>
yang mewakili penyempurnaan interaksi pengguna. Task<bool>
<code class="language-csharp">private TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(); // Event handler to set the task's result private void buttonContinue_Click(object sender, RoutedEventArgs e) { tcs.SetResult(true); } // Asynchronous method awaiting task completion private async Task GetResults() { // ... Perform lengthy operations ... await tcs.Task; // Pause until the task completes // ... Continue execution after the event ... }</code>
asynchronous sehingga peristiwa yang ditentukan, mengelakkan teknik pengundian yang tidak cekap. Pilih kaedah yang paling sesuai dengan seni bina dan kerumitan aplikasi anda. GetResults
Atas ialah kandungan terperinci Bagaimana untuk menggantung pelaksanaan kaedah async sehingga peristiwa berlaku dalam aplikasi metro?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!