C# 使用 CancellationTokenSource 终止线程
时间: 2023-12-30 12:02:33 浏览: 199
C#停止线程的方法
5星 · 资源好评率100%
在 C# 中,使用 CancellationTokenSource 类可以实现对线程的终止操作。该类允许你创建一个 CancellationToken 对象,该对象可以被传递到线程中,并且可以在需要时用于取消线程。
以下是使用 CancellationTokenSource 终止线程的步骤:
1. 创建 CancellationTokenSource 对象。
```
CancellationTokenSource cts = new CancellationTokenSource();
```
2. 将 CancellationToken 对象传递给线程。
```
Thread thread = new Thread(() => {
// 在这里编写线程代码
}, cts.Token);
```
3. 在需要终止线程的地方,调用 CancellationTokenSource 的 Cancel 方法。
```
cts.Cancel();
```
4. 在线程的代码中,定期检查 CancellationToken 的 IsCancellationRequested 属性,如果为 true,则退出线程。
```
while (!cts.Token.IsCancellationRequested) {
// 在这里编写线程代码
}
```
完整示例代码如下:
```
using System;
using System.Threading;
class Program {
static void Main(string[] args) {
CancellationTokenSource cts = new CancellationTokenSource();
Thread thread = new Thread(() => {
while (!cts.Token.IsCancellationRequested) {
Console.WriteLine("Thread is running...");
Thread.Sleep(1000);
}
Console.WriteLine("Thread is canceled.");
}, cts.Token);
thread.Start();
Thread.Sleep(5000);
cts.Cancel();
Console.ReadKey();
}
}
```
在上面的示例中,线程每秒输出一次"Thread is running...",当调用 CancellationTokenSource 的 Cancel 方法后,线程会退出并输出"Thread is canceled."。
阅读全文