C Shap自动化控制多线程实例
时间: 2023-09-04 11:12:51 浏览: 113
以下是一个C#自动化控制多线程的示例:
```csharp
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
// 创建一个AutoResetEvent对象
AutoResetEvent autoEvent = new AutoResetEvent(false);
// 创建一个线程池
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), autoEvent);
// 等待线程池中的线程执行完毕
autoEvent.WaitOne();
Console.WriteLine("All threads completed.");
}
static void ThreadProc(object stateInfo)
{
// 获取AutoResetEvent对象
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} started.");
// 模拟一个耗时的操作
Thread.Sleep(5000);
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} finished.");
// 通知主线程线程执行完毕
autoEvent.Set();
}
}
```
该示例中创建一个AutoResetEvent对象,它用于通知主线程线程池中的所有线程已经执行完毕。然后,我们使用ThreadPool.QueueUserWorkItem方法在线程池中创建一个新线程,并将AutoResetEvent对象作为参数传递给该线程。
在ThreadProc方法中,我们获取AutoResetEvent对象,执行一些耗时的操作(在这里,我们使用Thread.Sleep方法模拟),然后通知主线程线程执行完毕。最后,主线程等待AutoResetEvent对象的信号,以确保所有线程都已执行完毕。
阅读全文