Melaksanakan waktu tamat untuk operasi tak segerak dalam C#
Menguruskan operasi asynchronous secara berkesan sering memerlukan menggabungkan mekanisme masa untuk mencegah penyekatan tidak terbatas. Artikel ini menunjukkan cara membatalkan operasi di C# selepas tempoh masa yang ditentukan menggunakan Task.await
. CancellationTokenSource
menyediakan mekanisme untuk mengawal pembatalan tugas tak segerak. Dengan membuat CancellationTokenSource
dan lulus tokennya ke tugas, anda boleh mencetuskan pembatalan apabila diperlukan. CancellationTokenSource
Contoh Kod:
coretan kod C# berikut menggambarkan penggunaan untuk mengendalikan masa: CancellationTokenSource
private static async Task<string> GetFinalUrl(PortalMerchant portalMerchant) { // ... (Existing code for setting browser features and URL validation) ... Uri trackingUrl = new Uri(portalMerchant.Url); var cts = new CancellationTokenSource(); var task = MessageLoopWorker.Run(DoWorkAsync, trackingUrl, cts.Token); // Use Task.WhenAny to monitor for task completion or timeout if (await Task.WhenAny(task, Task.Delay(5000, cts.Token)) == task) { // Task completed within the timeout if (!String.IsNullOrEmpty(task.Result?.ToString())) { return new Uri(task.Result.ToString()).ToString(); // Ensure string return } else { throw new Exception("Parsing Failed"); } } else { // Timeout occurred cts.Cancel(); // Explicitly cancel the task throw new TimeoutException(); } } static async Task<object> DoWorkAsync(object[] args) { // ... (Existing code for web browser interaction) ... }
. Penggunaan GetFinalUrl
dengan elegan menunggu sama ada tugas Task.WhenAny
untuk menyelesaikan atau tamat masa untuk tamat tempoh. Sekiranya masa tamat berlaku, DoWorkAsync
dipanggil untuk membatalkan operasi tak segerak, dan cts.Cancel()
dibuang. Pengendalian ralat diperbaiki untuk memberikan mesej pengecualian yang lebih spesifik. Ingatlah untuk menyesuaikan TimeoutException
dengan betul mengendalikan MessageLoopWorker.Run
. CancellationToken
Atas ialah kandungan terperinci Bagaimana untuk membatalkan Operasi Tugas.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!