Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara membatalkan tugas -tugas asynchronous dengan betul di Winrt?

Bagaimana cara membatalkan tugas -tugas asynchronous dengan betul di Winrt?

Susan Sarandon
Lepaskan: 2025-01-26 12:41:11
asal
220 orang telah melayarinya

How to Properly Cancel Asynchronous Tasks in WinRT?

Kaedah yang betul untuk membatalkan tugas tak segerak Winrt

Di Windows 8 WinRT, tugas ini menyediakan mekanisme untuk melaksanakan operasi tak segerak. Walau bagaimanapun, pembatalan tugas pemprosesan mungkin rumit.

Pertimbangkan kod berikut:

Walaupun kaedah
<code class="language-csharp">private async void TryTask()
{
    CancellationTokenSource source = new CancellationTokenSource();
    source.Token.Register(CancelNotification);
    source.CancelAfter(TimeSpan.FromSeconds(1));
    var task = Task<int>.Factory.StartNew(() => slowFunc(1, 2), source.Token);

    await task;

    if (task.IsCompleted)
    {
        MessageDialog md = new MessageDialog(task.Result.ToString());
        await md.ShowAsync();
    }
    else
    {
        MessageDialog md = new MessageDialog("Uncompleted");
        await md.ShowAsync();
    }
}

private int slowFunc(int a, int b)
{
    string someString = string.Empty;
    for (int i = 0; i < 1000000; i++)
    {
        someString += i.ToString();
    }
    return a + b;
}</code>
Salin selepas log masuk
dipanggil, tugas masih berjalan dan selesai di latar belakang. Untuk menghentikan tugas sepenuhnya apabila membatalkan, sila ikuti kriteria berikut:

CancelNotification

Lulus pembatalanToken:
    lulus
  • untuk setiap sokongan untuk membatalkan kaedah pembatalan. kerap periksa pembatalanToken: CancellationToken Kaedah ini mesti diperiksa secara teratur
  • .
  • Kod yang lebih baik adalah seperti berikut: CancellationToken
Melalui pengubahsuaian ini, jika tugas dibatalkan semasa pelaksanaan, tugas itu akan dibatalkan sepenuhnya dan menyebabkan keabnormalan ketika menunggu.

Atas ialah kandungan terperinci Bagaimana cara membatalkan tugas -tugas asynchronous dengan betul di Winrt?. 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