C# ThreadPool 开启3个线程,在所有线程执行完后输出执行完成
时间: 2024-02-23 12:00:03 浏览: 69
可以使用 ManualResetEventSlim 来实现等待所有线程执行完成,并输出执行完成的提示信息。以下是示例代码:
```
// 创建 ManualResetEventSlim 对象
var waitHandle = new ManualResetEventSlim();
// 创建线程池
for (int i = 0; i < 3; i++)
{
ThreadPool.QueueUserWorkItem(state =>
{
// 执行任务操作
Console.WriteLine($"线程 {Thread.CurrentThread.ManagedThreadId} 执行任务...");
// 通知 ManualResetEventSlim 对象,线程执行完成
waitHandle.Set();
});
}
// 等待所有线程执行完成
for (int i = 0; i < 3; i++)
{
waitHandle.Wait();
}
// 所有线程执行完成,输出提示信息
Console.WriteLine("所有线程执行完成!");
```
在上述代码中,首先创建了一个 ManualResetEventSlim 对象 waitHandle,来实现等待所有线程执行完成。接着,创建了3个线程池,并在每个线程池执行完后,调用 waitHandle.Set 方法,通知 ManualResetEventSlim 对象,线程执行完成。最后,使用一个 for 循环等待所有线程执行完成,并在所有线程执行完成后,输出提示信息。
阅读全文