Bu Windows 8 WinRT görevleriyle oynuyorum ve aşağıdaki yöntemi kullanarak bir görevi iptal etmeye çalışıyorum ve bir noktaya kadar çalışıyor. CancelNotification yöntemi çağrılır, bu da görevin iptal edildiğini düşünmenizi sağlar, ancak arka planda görev çalışmaya devam eder, daha sonra tamamlandıktan sonra, Görev durumu her zaman tamamlanır ve asla iptal edilmez. İptal edildiğinde görevi tamamen durdurmanın bir yolu var mı?
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()
{
}