要中止使用ThreadPool.QueueUserWorkItem创建的线程,可以使用CancellationTokenSource和CancellationToken。以下是一个示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
// 将 CancellationToken 传递给线程
ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), token);
// 在需要时取消线程
cts.Cancel();
}
static void DoWork(object state)
{
CancellationToken token = (CancellationToken)state;
while (!token.IsCancellationRequested)
{
// 在此处执行任务
// 如果任务完成,则退出循环
break;
}
}
}
在上面的示例中,我们创建了一个CancellationTokenSource和CancellationToken,并将其传递给ThreadPool.QueueUserWorkItem创建的线程。在需要时,我们可以调用CancellationTokenSource.Cancel方法来取消线程。在DoWork方法中,我们检查CancellationToken.IsCancellationRequested属性以确定是否已请求取消。如果已请求取消,则退出循环并结束线程。
领取专属 10元无门槛券
手把手带您无忧上云