AutoResetEvent readComplete = new AutoResetEvent(false); AutoResetEvent writeComplete = new AutoResetEvent(true);
时间: 2024-09-06 09:04:22 浏览: 9
`AutoResetEvent` 是 .NET Framework 中的一个同步原语,用于线程间的通信。当你创建一个 `AutoResetEvent` 对象时,可以通过传递布尔值来指定事件是在等待期间被设置还是清零。`false` 表示事件会在最后一个等待线程释放它后重置(即等待队列为空时),而 `true` 则表示事件在被首次设置后会立即自动重置。
`readComplete = new AutoResetEvent(false)` 初始化了一个读取完成事件,意味着当读操作完成后,需要手动调用 Reset 方法才能再次触发新的读请求。
`writeComplete = new AutoResetEvent(true)` 则初始化了一个写入完成事件,其特点是当第一次被设置(通常是写操作完成)后会自动重置,所以后续的读操作可以立即开始,无需额外的操作来通知。
下面是一个简单的演示:
```csharp
// 假设有一个多线程场景,写操作先于读操作
AutoResetEvent writeComplete = new AutoResetEvent(true); // 写操作完成后会自动触发
AutoResetEvent readComplete = new AutoResetEvent(false); // 读操作需要手动触发
// 写操作完成并设置事件
Thread writer = new Thread(() => {
// ...写操作...
writeComplete.Set(); // 设置写完成事件
});
// 读操作等待写完成
Thread reader = new Thread(() => {
writeComplete.WaitOne(); // 等待写完成事件
// ...读操作...
readComplete.Set(); // 设置读完成事件
});
writer.Start();
reader.Start();
writer.Join();
reader.Join();
```