Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menggantung pelaksanaan kaedah async sehingga peristiwa berlaku dalam aplikasi metro?

Bagaimana untuk menggantung pelaksanaan kaedah async sehingga peristiwa berlaku dalam aplikasi metro?

Patricia Arquette
Lepaskan: 2025-01-29 17:01:10
asal
827 orang telah melayarinya

How to Suspend Async Method Execution Until an Event Occurs in a Metro App?

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

Kelas

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>
Salin selepas log masuk

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>
Salin selepas log masuk
Kedua -dua kaedah dengan berkesan menjeda operasi

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan