c#task终止线程
时间: 2023-06-29 19:02:53 浏览: 187
C#实现终止正在执行的线程
在 C# 中,可以使用 CancellationTokenSource 类来终止线程。CancellationTokenSource 类提供了一个 CancellationToken 对象,在需要终止线程时可以调用 CancellationTokenSource.Cancel() 方法,将 CancellationToken.IsCancellationRequested 属性设为 true,然后在线程中检查该属性,以判断是否需要终止线程。
以下是一个示例:
```csharp
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
var cts = new CancellationTokenSource();
var token = cts.Token;
Task.Run(() =>
{
while (true)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("线程已终止");
break;
}
Console.WriteLine("线程正在运行");
Thread.Sleep(1000);
}
}, token);
Console.WriteLine("按下任意键终止线程");
Console.ReadKey();
cts.Cancel();
Console.ReadKey();
}
}
```
在此示例中,我们创建了一个 CancellationTokenSource 对象,并使用它的 Token 属性获取一个 CancellationToken 对象。然后,我们使用 Task.Run() 方法启动一个新线程,在其中使用 while 循环,检查 CancellationToken.IsCancellationRequested 属性。如果该属性为 true,则表示需要终止线程,我们就退出循环。否则,线程会一直运行,并每秒钟输出一次“线程正在运行”。
最后,我们在主线程中等待用户按下任意键,然后调用 CancellationTokenSource.Cancel() 方法,终止线程。
阅读全文