Menangani pembatalan tugas yang tidak boleh dipercayai di Winrt
menggunakan untuk menghentikan tugas WinRT boleh tidak boleh dipercayai; Kaedah ini mungkin kelihatan berjaya, namun tugas terus berjalan. Ini sering membawa kepada status tugas yang lengkap walaupun percubaan pembatalan. CancelNotification
Pendekatan pembatalan yang mantap
Penyelesaiannya terletak pada pemahaman. Pembatalan NET dan corak tak segerak berasaskan tugas (TAP). Ketik Mengesyorkan menggunakan dalam kaedah asynchronous. Langkah penting adalah lulus CancellationToken
ke setiap kaedah yang boleh dibatalkan dan memasukkan pemeriksaan biasa dalam kaedah tersebut. CancellationToken
Contoh kod yang lebih baik:
Kod yang disemak ini menunjukkan pembatalan tugas yang boleh dipercayai menggunakan: await
<code class="language-csharp">private async Task TryTask() { var source = new CancellationTokenSource(); source.CancelAfter(TimeSpan.FromSeconds(1)); var task = Task.Run(() => slowFunc(1, 2, source.Token), source.Token); try { // Await the task; an exception is thrown if cancelled. await task; } catch (OperationCanceledException) { // Handle cancellation gracefully. Console.WriteLine("Task cancelled successfully."); } } private int slowFunc(int a, int b, CancellationToken cancellationToken) { string someString = string.Empty; for (int i = 0; i < 1000000; i++) { someString += i.ToString(); // Simulate long-running operation cancellationToken.ThrowIfCancellationRequested(); } return a + b; }</code>
seperti berikut: CancellationToken
await task
jika tugas dibatalkan. Pengecualian ini ditangkap dan dikendalikan. OperationCanceledException
cancellationToken.ThrowIfCancellationRequested()
kerap memeriksa permintaan pembatalan. slowFunc
ThrowIfCancellationRequested
tugas -tugas di WinRT, menghalang proses latar belakang dan menyediakan penyelesaian yang lebih mantap. await
Atas ialah kandungan terperinci Bagaimanakah saya boleh membatalkan tugas yang boleh dibatalkan di Winrt?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!