Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menggantung dan menyambung semula operasi tak segerak dalam aplikasi metro C#/XAML?

Bagaimana untuk menggantung dan menyambung semula operasi tak segerak dalam aplikasi metro C#/XAML?

Susan Sarandon
Lepaskan: 2025-01-29 17:11:16
asal
706 orang telah melayarinya

How to Suspend and Resume Asynchronous Operations in C#/XAML Metro Apps?

Menguruskan Tugas Asynchronous dalam Aplikasi Gaya Metro C#/XAML

dalam aplikasi gaya metro C#/XAML, mengendalikan operasi jangka panjang secara tidak sengaja menggunakan

/async adalah penting untuk mencegah pembekuan UI. Walau bagaimanapun, situasi timbul di mana berhenti dan meneruskan operasi ini berdasarkan interaksi pengguna diperlukan. await

Menggunakan Semaphoreslim untuk Jeda yang didorong oleh Acara

kelas

menawarkan penyelesaian yang elegan untuk penggantungan berasaskan acara: SemaphoreSlim

    Inisialisasi objek
  1. dengan kiraan awal 0 dan kiraan maksimum 1: SemaphoreSlim private SemaphoreSlim signal = new SemaphoreSlim(0, 1);
  2. pada klik butang "Teruskan", lepaskan semaphore:
  3. signal.Release();
  4. Dalam kaedah jangka panjang anda (mis., ), tunggu isyarat semaphore:
  5. GetResults await signal.WaitAsync();
Menggunakan TaskCompletionsource

untuk Pengurusan Tugas Pendekatan lain yang berkesan melibatkan kelas

:

TaskCompletionSource<bool>

mengisytiharkan
    :
  1. TaskCompletionSource<bool> private TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(); pada butang "Teruskan" klik, tetapkan hasil tugas:
  2. tcs.SetResult(true); Dalam operasi asynchronous anda, tunggu tugas:
  3. await tcs.Task;
kelebihan jeda/resume yang didorong oleh peristiwa

Kaedah ini mengelakkan ketidakcekapan pengundian, menghapuskan sisa sibuk dan sisa sumber. Dengan menggunakan mekanisme yang didorong oleh peristiwa, anda mencapai jeda yang cekap dan meneruskan fungsi untuk tugas-tugas asynchronous yang lama.

Atas ialah kandungan terperinci Bagaimana untuk menggantung dan menyambung semula operasi tak segerak dalam aplikasi metro C#/XAML?. 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