Como cancelar uma tarefa em espera?
Estou jogando com essas tarefas do Windows 8 WinRT, e estou tentando cancelar uma tarefa usando o método abaixo, e isso funciona em algum ponto. O método CancelNotification é chamado, o que faz você pensar que a tarefa foi cancelada, mas em segundo plano a tarefa continua em execução e, depois de concluída, o status da Tarefa é sempre concluído e nunca cancelado. Existe uma maneira de interromper completamente a tarefa quando ela é cancelada?
<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>