Jak anulować zadanie w oczekiwaniu?
Gram z tymi zadaniami WinRT systemu Windows 8 i próbuję anulować zadanie przy użyciu poniższej metody i działa do pewnego stopnia. Wywoływana jest metoda CancelNotification DOES, która sprawia, że uważasz, że zadanie zostało anulowane, ale w tle zadanie jest uruchomione, a po jego zakończeniu status zadania jest zawsze zakończony i nigdy nie jest anulowany. Czy istnieje sposób, aby całkowicie zatrzymać zadanie, gdy zostanie anulowane?
<code>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 < 200000; i++) { someString += "a"; } return a + b; } private void CancelNotification() { } </code>