using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace CancellationTokenExperiments
{
class CancellationTokenTest
{
static void Main(string[] args)
{
CancellationTokenSource tokenSource = new CancellationTokenSource();
CancellationToken token = tokenSource.Token;
tokenSource.Cancel();
Task.Run(() => Console.WriteLine("Hello from Task"), token);
}
}
}
我想了解C#中的cancellationTokens的概念。我知道上面的代碼不會打印「來自任務的Hello」,因爲在任務運行之前檢查了令牌。瞭解C中的取消標記#
但是我有幾個問題。
Task.Run(() => Console.WriteLine("Hello from Task"), token);
是什麼上面的語句是什麼意思?在某種意義上,它與簡單地叫Console.WriteLine("Hello from Task")
有什麼不同?只是通過傳遞令牌我們能夠取消Task
? Task.Run
開頭的空括號()
是什麼意思?
- 如何更改上述代碼以便我可以及時停止特定實例的執行。
「是否只是我們可以通過傳遞令牌來取消任務」 - 否,任務中的代碼必須在運行時檢查取消令牌並在請求取消時退出。任務不會因爲有取消請求而被神奇地停止。 – Enigmativity
儘管它們具有相同的標題,但它與標記爲重複的問題並不完全相同。被問及的問題和具體問題的內容是不同的。 –