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>
CancelNotification
CancellationToken
Kaedah ini mesti diperiksa secara teratur CancellationToken
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!