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
290 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
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;
}
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!

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