Multithreading 为什么AutoResetEvent和ManualResetEvent在构造函数中不支持名称?

Multithreading 为什么AutoResetEvent和ManualResetEvent在构造函数中不支持名称?,multithreading,.net-2.0,synchronization,Multithreading,.net 2.0,Synchronization,在.NET Framework 2.0上,AutoResetEvent和ManualResetEvent继承自EventWaitHandle。EventWaitHandle类有4个不同的构造函数。3个构造函数支持为事件命名。另一方面,ManualResetEvent和AutoResetEvent都不支持命名,并提供一个接收initialState的构造函数。我可以简单地从EventWaitHandle继承并编写支持所有构造函数重载的类的我自己的实现,但是如果不需要的话,我不想重新发明轮子。我的问

在.NET Framework 2.0上,AutoResetEvent和ManualResetEvent继承自EventWaitHandle。EventWaitHandle类有4个不同的构造函数。3个构造函数支持为事件命名。另一方面,ManualResetEvent和AutoResetEvent都不支持命名,并提供一个接收initialState的构造函数。我可以简单地从EventWaitHandle继承并编写支持所有构造函数重载的类的我自己的实现,但是如果不需要的话,我不想重新发明轮子。我的问题是:

命名事件是否有特殊问题? 你知道微软为什么不支持它吗? 您是否有比从EventWaitHandle类继承并调用以下示例中的相应构造函数更好的方案?
您可以创建命名的手动重置事件,如下所示:

// Open the event by name.
EventWaitHandle namedMRSE = 
    new EventWaitHandle(false, EventResetMode.ManualReset, @"TheName");
对于上述代码。我不知道设计背后的具体原因,但在msdn上,这表明存在基于应用领域和流程的区别:

事件等待句柄在许多情况下都很有用 相同的同步场景 作为班长。事件等待 手柄通常比其他手柄更容易使用 System.Threading.Monitor.Wait和 System.Threading.Monitor.PulseSystem.Object 方法,它们提供了更多的控制 过信号。命名事件等待 句柄也可用于 跨服务器同步活动 应用领域和流程, 而监视器是本地的 应用程序域


您的解决方案与我的解决方案类似。我从派生类构造函数调用EventWaitHandle,您可以直接使用它。@lkaso我认为它比创建派生类更直接一些。。。不幸的是,对于设计选择的原因,我没有太多可以提供的。
// Open the event by name.
EventWaitHandle namedMRSE = 
    new EventWaitHandle(false, EventResetMode.ManualReset, @"TheName");