c# - AutoResetEvent.Set() 是做什么的?

标签 c# .net multithreading autoresetevent

如果我这样做:

private static System.Threading.AutoResetEvent event_2 = new System.Threading.AutoResetEvent(false);

然后在主线程中我做:

event_2.Set();

它将状态从 false 更改为 true

如果是这样,基本上可以:

AutoResetEventState = !AutoResetEventState 

?

最佳答案

它将状态设置为允许线程在 Wait() 上继续执行的状态。

如果有任何线程已经在等待,那么一个线程将被允许继续进行并且状态将立即设置为未设置,因此所有其他线程将继续阻塞。

如果当前没有线程在等待,那么第一个等待的线程将立即被允许通过,但后续线程将被阻塞。

其他 EventWaitHandle 派生类共享相同的通用机制,但允许线程进行时的自动重置与 ManualResetEvent 不同,因此得名。

如果 true 传递给构造函数,则初始状态发出信号(允许线程前进),如果传递 false 则不发出信号,因此传递 true 与您在构造后立即调用 Set() 相同,而传递 false 则与您调用 Reset 相同()

关于c# - AutoResetEvent.Set() 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037396/

相关文章:

c# - 如果 StringBuilder 是可变的,那么为什么 StringBuilder 方法返回一个 StringBuilder 对象?

c# - 如何从 LuisResult 对象获取实体的值? (带有 Bot Framework .NET 的 LUIS)

c# - 使形状最顶层

c# - 向 DataGrid 添加滚动事件

c# - 从不同的服务器获取 CLR Procedure 中的数据

linux - 在进程上下文切换的情况下,新进程的虚拟地址空间 (VAS) 是否已加载到 CPU 上下文(CPU 的寄存器)中?

java - 如果一个线程执行完最后一条语句,一旦完成,它是否会像显式调用 return 一样保证死亡?

java - ArrayBlockingQueue add 方法是即时的吗?

c# - 在 C# 中创建新的 Calc 文档 (OpenOffice)

.net - SignalR 和 AngularJS