怎么优雅的结束一个后台线程
using System;
using System.Threading;
public class Program
{
public static void Main()
{
// 创建一个CancellationTokenSource对象,用于生成取消令牌。
var cts = new CancellationTokenSource();
// 创建并启动一个新线程。
Thread newThread = new Thread(() => DoWork(cts.Token));
newThread.IsBackground = true; // 设置为后台线程。
newThread.Start();
// 等待一段时间后请求取消线程。
Thread.Sleep(5000); // 等待5秒钟。
cts.Cancel(); // 发送取消请求。
}
private static void DoWork(CancellationToken token)
{
try
{
// 模拟一些工作。
for (int i = 0; i < 100; i++)
{
token.ThrowIfCancellationRequested(); // 检查是否收到取消请求。
Thread.Sleep(1000); // 模拟工作耗时。
Console.WriteLine("Working index:" + i.ToString()); // 输出工作进度。
}
}
catch (OperationCanceledException)
{
Console.WriteLine("Thread cancellation requested."); // 输出线程取消请求。
}
}
}