이 Windows 8 WinRT 작업을하고 있는데 아래 방법을 사용하여 작업을 취소하려고하는데 어느 정도 작동합니다. CancelNotification 메소드가 호출되어 작업이 취소되었다고 생각하지만 백그라운드에서 작업이 계속 실행되고 완료된 후에는 작업 상태가 항상 완료되고 절대 취소되지 않습니다. 작업이 취소 될 때 작업을 완전히 중단 할 수있는 방법이 있습니까?
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()
{
}