C#TASK 使用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被请求取消时,线程方法应该将操作终止并返回,以便及时释放资源和退出线程
原文地址: https://www.cveoy.top/t/topic/iQOo 著作权归作者所有。请勿转载和采集!