如何停止正在运行中的子线程
通过协作式取消模式
在线程函数中,你可以周期性地检查一个标志位,以确定是否应该停止线程。该标记位可以是共享变量,也可以是CancellationToken。
CancellationTokenSource 和 CancellationToken 被用来发送取消请求,而任务或线程通过检查 CancellationToken.IsCancellationRequested 属性或调用 ThrowIfCancellationRequested 方法来响应这个请求。
using System;
using System.Threading;
using System.Threading.Tasks;
//
// 方式1:使用CancellationToken,停止标志位来停止线程
//
class CancellationTokenExample
{
private CancellationTokenSource _cts = new CancellationTokenSource();
public void StartWork()
{
Task.Run(() =>
{
try
{
// 模拟长时间运行的工作,直到有取消请求时,退出while
while(!_cts.IsCancellationRequested)
{
Thread.Sleep(1000);
//如果有取消请求,也可以通过抛出异常结束线程
_cts.</

5223

被折叠的 条评论
为什么被折叠?



