以下代码演示了主线程如何控制子线程的运行,希望对学习C#多线程编程的小伙伴有所帮助!
CancellationTokenSource tokenSource = new CancellationTokenSource();
ManualResetEvent manualResetEvent = new ManualResetEvent(true);
Console.WriteLine("主线程指令:启动");
var myTask = Task.Run(async () =>
{
int value = 0;
while (true)
{
manualResetEvent.WaitOne();
value++;
Console.WriteLine($"\t子线程运行了{value*100}毫秒");
await Task.Delay(100);
}
}, tokenSource.Token);
Thread.Sleep(500);
Console.WriteLine("主线程指令:暂停");
manualResetEvent.Reset();
Thread.Sleep(500);
Console.WriteLine("主线程指令:继续");
manualResetEvent.Set();
Thread.Sleep(500);
Console.WriteLine("主线程指令:停止");
tokenSource.Cancel();
manualResetEvent.Close();
Console.Read();
运行结果
主线程指令:启动
子线程运行了100毫秒
子线程运行了200毫秒
子线程运行了300毫秒
子线程运行了400毫秒
子线程运行了500毫秒
主线程指令:暂停
主线程指令:继续
子线程运行了600毫秒
子线程运行了700毫秒
子线程运行了800毫秒
子线程运行了900毫秒
子线程运行了1000毫秒
主线程指令:停止
网友评论