public static void Main()
var task = new Action<object, CancellationToken>((state, token) => {
for(var i = 0; i < 10; i++){
if(token.IsCancellationRequested)
Console.WriteLine("Break task.");
Console.WriteLine("Task has been completed.");
var cts = new CancellationTokenSource();
cts.Token.Register(() => {
Console.WriteLine("Cancelled.");
var t = ThreadPool.QueueUserWorkItem(state => { task(state, cts.Token); });
Console.WriteLine("Hello World.");