Tôi đang chơi với các tác vụ WinRT Windows 8 này và tôi đang cố gắng hủy tác vụ bằng phương pháp bên dưới và nó hoạt động đến một lúc nào đó. Phương thức Hủy bỏ thông báo KHÔNG được gọi, khiến bạn nghĩ rằng tác vụ đã bị hủy, nhưng trong nền, tác vụ vẫn tiếp tục chạy, sau khi hoàn thành, trạng thái của Tác vụ luôn hoàn thành và không bao giờ bị hủy. Có cách nào để dừng hoàn toàn nhiệm vụ khi nó bị hủy không?
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()
{
}