Saya bermain dengan tugas-tugas Windows 8 WinRT ini, dan saya mencoba untuk membatalkan tugas menggunakan metode di bawah ini, dan itu berfungsi sampai titik tertentu. Metode CancelNotification TIDAK dipanggil, yang membuat Anda berpikir tugas itu dibatalkan, tetapi di latar belakang tugas itu terus berjalan, kemudian setelah selesai, status Tugas selalu selesai dan tidak pernah dibatalkan. Apakah ada cara untuk benar-benar menghentikan tugas saat dibatalkan?
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()
{
}