В .NET Framework 2.0 AutoResetEvent и ManualResetEvent наследуются от EventWaitHandle. Класс EventWaitHandle имеет 4 разных конструктора. 3 из конструкторов поддерживают присвоение имени событию. С другой стороны, ManualResetEvent и AutoResetEvent не поддерживают именование и предоставляют один конструктор, который получает initialState. Я могу просто наследовать от EventWaitHandle и написать свою собственную реализацию тех классов, которые поддерживают все перегрузки конструктора, но я не люблю заново изобретать колесо, если мне это не нужно. Мои вопросы:
- Есть ли особая проблема в именовании событий?
- Есть ли у вас идеи, почему Microsoft не поддерживает его?
- Есть ли у вас предложение лучше, чем наследование от класса EventWaitHandle и вызов соответствующего конструктора, как в следующем примере?
public class MyAutoResetEvent: EventWaitHandle
{
public MyAutoResetEvent(bool initialState)
: base(initialState, EventResetMode.AutoReset)
{
}
public MyAutoResetEvent(bool initialState, string name)
: base(initialState, EventResetMode.AutoReset, name)
{
}
public MyAutoResetEvent(bool initialState, string name, out bool createdNew)
: base(initialState, EventResetMode.AutoReset, name, out createdNew)
{
}
public MyAutoResetEvent(bool initialState, string name, out bool createdNew, EventWaitHandleSecurity eventSecurity)
: base(initialState, EventResetMode.AutoReset, string.Empty, out createdNew, eventSecurity)
{
}
}