スレッドを正しく停止
3192 ワード
using System;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var p = new Program();
p.Do();
p.Stop();
}
CancellationTokenSource cts = new CancellationTokenSource();
void Do()
{
var worker = new Thread(() =>
{
while (true)
{
if (cts.Token.IsCancellationRequested) //
{
//
Console.WriteLine("this worker was stoped");
break;
}
Console.WriteLine(DateTime.Now);
Thread.Sleep(1000);
}
});
worker.Start();
}
void Stop()
{
Console.ReadKey();
cts.Cancel(); //
cts.Token.Register(() => { //
Console.WriteLine("worker has been stoped!");
});
Console.ReadKey();
}
}
}