在.NET中,应该避免使用Thread.Abort()强制终止线程(会导致资源泄漏和不一致状态)。推荐使用CancellationToken实现优雅的线程终止。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var cts = new CancellationTokenSource();
// 启动任务
Task workerTask = Task.Run(() => WorkerMethod(cts.Token), cts.Token);
Console.WriteLine("主线程:等待3秒后再请求停止...");
await Task.Delay(3000);
// 请求任务停止
cts.Cancel();
// 等待任务完成
try
{
await workerTask;
}
catch (OperationCanceledException)
{
Console.WriteLine("任务已取消");
}
}
static void WorkerMethod(CancellationToken token)
{
int counter = 0;
while (!token.IsCancellationRequested)
{
Console.WriteLine($"工作:计数 = {counter++}");
Thread.Sleep(500);
}
}
}
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建取消令牌源(用于通知线程停止)
var cts = new CancellationTokenSource();
// 启动线程
Thread workerThread = new Thread(() => WorkerMethod(cts.Token));
workerThread.Start();
Console.WriteLine("主线程:等待3秒后请求停止线程...");
Thread.Sleep(3000);
// 请求线程停止
Console.WriteLine("主线程:请求线程停止...");
cts.Cancel();
// 等待线程安全退出
wo...