EventArrivedEventHandler和EventHandler之间的区别?

时间:2017-09-15 16:01:40

标签: c# event-handling anonymous-methods

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

我本来希望能够将EventArrivedEventHandler转换为EventHandler,因为它们都只是委托......但显然不是。

这是不可能的?

编辑:我找到了一种让我能干得很干净的方法。

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

2 个答案:

答案 0 :(得分:1)

无法实现此目的的原因是EventArraivedEventHandlerEventHandler具有不同的签名。正如您所看到的,EventArrivedEventHandler将第EventArrivedEventArgs视为EventArgs而不是EventHandler视为public delegate void EventArrivedEventHandler(object sender, EventArrivedEventArgs e)

EventHandler<EventArrivedEventArgs>

理论上应该可以将其转换为taxi.mileage

访问EventArivedEventHandlerEventArrivedEventArgs的MSDN页面,了解有关此问题的详细信息。

答案 1 :(得分:0)

public event EventHandler DriveDetected;

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

watcher.EventArrived += new EventArrivedEventHandler(workaround);

根据你的帖子。欢呼声。