我试图创建一个USB控制器类,只是试图将我的内部EventArrivedEventHandler
从ManagementEventWatcher
曝光,以允许消费者在检测到USB时可以做某事。
我原本希望能够将EventarrivedEventHandler扔给EventHandler,因为他们都是代表……但显然不是。
有没有可能的原因?
编辑:我找到了一种方法,可以让我非常干净地做。
_watcher.EventArrived += (sender, eventArgs) => DeviceDetected?.Invoke(null, null);
不可能的原因是 EventArraivedEventHandler
和 EventHandler
具有不同的签名。如您所见,EventArrivedEventHandler
作为第二个参数EventArrivedEventArgs
而不是EventArgs
,而不是CC_7。
public delegate void EventArrivedEventHandler(object sender, EventArrivedEventArgs e)
从理论上讲,应该可以将其施放给EventHandler<EventArrivedEventArgs>
。
有关此问题的更多详细信息,请访问EventArivedEventHandler和EventArrivedEventargs的MSDN页面。
public event EventHandler DriveDetected;
private void workaround(object sender, EventArrivedEventArgs e)
{
DriveDetected?.Invoke(sender, e as EventArgs);
}
watcher.EventArrived += new EventArrivedEventHandler(workaround);
根据您的帖子。欢呼。