C# 使用 CancellationToken 绑定线程方法:实现安全可控的线程操作
要使用 CancellationToken 绑定线程方法,首先需要创建一个 CancellationTokenSource 对象,然后使用该对象的 Token 属性获取 CancellationToken。
接下来,可以将 CancellationToken 传递给线程方法,并在方法中使用该标记来检查是否取消了操作。
下面是一个示例代码:
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建CancellationTokenSource对象
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
// 获取CancellationToken
CancellationToken cancellationToken = cancellationTokenSource.Token;
// 创建一个新线程并绑定方法
Thread thread = new Thread(() =>
{
// 在这里执行线程的操作
for (int i = 0; i < 10; i++)
{
// 检查是否取消了操作
if (cancellationToken.IsCancellationRequested)
{
Console.WriteLine('操作已取消');
return;
}
Console.WriteLine('线程正在执行:' + i);
Thread.Sleep(1000);
}
Console.WriteLine('操作完成');
});
// 启动线程
thread.Start();
// 等待用户输入以取消操作
Console.WriteLine('按下任意键以取消操作');
Console.ReadKey();
// 取消操作
cancellationTokenSource.Cancel();
// 等待线程结束
thread.Join();
Console.WriteLine('程序结束');
}
}
在上面的代码中,我们创建了一个新线程并在其中执行一个简单的循环操作。在每次循环中,我们检查 CancellationToken 是否已被请求取消,如果是,则输出'操作已取消'并返回。否则,继续执行操作。
在主线程中,我们等待用户输入以取消操作,然后调用 CancellationTokenSource 的 Cancel 方法来请求取消操作。最后,我们使用 Thread.Join 方法等待线程结束,并输出'程序结束'。
请注意,当 CancellationToken 被请求取消时,线程方法应该将操作终止并返回,以便及时释放资源和退出线程。
原文地址: http://www.cveoy.top/t/topic/qwUJ 著作权归作者所有。请勿转载和采集!