मैं इन विंडोज 8 WinRT कार्यों के साथ खेल रहा हूं, और मैं नीचे दी गई विधि का उपयोग करके किसी कार्य को रद्द करने की कोशिश कर रहा हूं, और यह कुछ बिंदु पर काम करता है। रद्दकरण विधि DOES कहलाती है, जिससे आपको लगता है कि कार्य रद्द कर दिया गया था, लेकिन पृष्ठभूमि में कार्य चलता रहता है, फिर उसके पूरा होने के बाद, टास्क की स्थिति हमेशा पूरी हो जाती है और कभी रद्द नहीं होती है। क्या यह रद्द होने पर कार्य को पूरी तरह से रोकने का कोई तरीका है?
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()
{
}