EventArrivedEventHandler 和 EventHandler 之间的区别?

Difference between EventArrivedEventHandler and EventHandler?

我尝试创建一个 USB 控制器 class 并试图从 ManagementEventWatcher 公开我的内部 EventArrivedEventHandler 以允许消费者在检测到 USB 时执行某些操作。

我曾期望能够将 EventArrivedEventHandler 转换为 EventHandler,因为它们都只是委托……但显然不是。

为什么这不可能?

编辑:我找到了一种方法,可以让我非常干净地做我想做的事。

_watcher.EventArrived += (sender, eventArgs) => DeviceDetected?.Invoke(null, null);

之所以不可能,是因为 EventArraivedEventHandlerEventHandler 有不同的签名。如您所见,EventArrivedEventHandlerEventArrivedEventArgs 作为第二个参数,而不是 EventHandler 那样的 EventArgs

public delegate void EventArrivedEventHandler(object sender, EventArrivedEventArgs e)

理论上应该可以将其转换为 EventHandler<EventArrivedEventArgs>

有关此问题的更多详细信息,请访问 EventArivedEventHandler and EventArrivedEventArgs 的 MSDN 页面。

public event EventHandler DriveDetected;

private void workaround(object sender, EventArrivedEventArgs e)
{
    DriveDetected?.Invoke(sender, e as EventArgs);
}

watcher.EventArrived += new EventArrivedEventHandler(workaround);

基于您的post。干杯。