我正在學習如何取消使用取消令牌的任務。 在這裏,我已經爲它寫了一個UnitTest,但我沒有得到它的工作方式。取消令牌的使用
[TestMethod]
public async Task Task_should_not_run_when_token_cancelled_before_its_call()
{
var cts = new CancellationTokenSource();
var token = cts.Token;
cts.Cancel();
Debug.WriteLine("Calling Cancellable Method".ToUpper());
try
{
await CheckMeCalled(token);
}
catch (Exception expException)
{
}
}
private async Task CheckMeCalled(CancellationToken ct)
{
Debug.WriteLine("Before task delayed".ToUpper());
await Task.Delay(5000);
Debug.WriteLine("After task delayed".ToUpper());
}
在上述測試I調用CheckMeCalled
方法之前調用的cts.Cancel()
。所以它不應該隨着取消而運行。但它正在全面運行。
我看過的地方,
If Task is not running and you cancel it then it will not go to a running state instead it go for canceled state when you call it
。
但似乎並沒有在這裏發生。 有人可以解釋給我嗎?任何幫助表示讚賞。歡呼聲:)