CancellationToken和CancellationTokenSource的使用方法
CancellationToken和CancellationTokenSource是.Net Framework 4.0引入的新特性,它们可以帮助开发者更好地管理和控制多线程程序的取消操作。
CancellationTokenSource是一个可用于发出取消请求的对象,它可以生成一个CancellationToken,当调用CancellationTokenSource的Cancel方法时,CancellationToken就会被取消,CancellationTokenSource可以用来发出取消请求,而CancellationToken可以用来检查是否发出了取消请求。
CancellationToken的使用方法
CancellationToken的使用方法非常简单,只需要在你的方法中添加一个CancellationToken参数,在方法内部检查CancellationToken的IsCancellationRequested属性是否为true,如果是true,则表示该方法已经被取消,可以做一些清理工作,返回。
public void DoWork(CancellationToken token) { if (token.IsCancellationRequested) { // 做一些清理工作 return; } // 执行其他工作 }
CancellationTokenSource的使用方法
CancellationTokenSource的使用方法也非常简单,只需要创建一个CancellationTokenSource对象,调用它的Cancel方法即可:
CancellationTokenSource cts = new CancellationTokenSource(); cts.Cancel();
CancellationTokenSource还提供了一个CreateLinkedTokenSource方法,该方法可以将多个CancellationTokenSource对象连接起来,当其中任意一个CancellationTokenSource调用Cancel方法时,所有连接的CancellationTokenSource对象都会被取消:
CancellationTokenSource cts1 = new CancellationTokenSource(); CancellationTokenSource cts2 = new CancellationTokenSource(); CancellationTokenSource cts3 = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, cts2.Token); cts1.Cancel(); // cts2和cts3也会被取消
CancellationTokenSource还提供了一个Register方法,该方法可以注册一个回调,当CancellationTokenSource调用Cancel方法时,该回调就会被调用:
CancellationTokenSource cts = new CancellationTokenSource(); cts.Token.Register(() => { // 这里的代码会在cts调用Cancel方法时被调用 }); cts.Cancel();
CancellationToken和CancellationTokenSource是.Net Framework 4.0引入的新特性,它们可以帮助开发者更好地管理和控制多线程程序的取消操作。