【问题标题】:Difference between EventArrivedEventHandler and EventHandler?EventArrivedEventHandler 和 EventHandler 的区别?
【发布时间】:2018-02-24 21:11:31
【问题描述】:

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

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

这是不可能的原因吗?

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

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

【问题讨论】:

    标签: c# event-handling anonymous-methods


    【解决方案1】:
    public event EventHandler DriveDetected;
    
    private void workaround(object sender, EventArrivedEventArgs e)
    {
        DriveDetected?.Invoke(sender, e as EventArgs);
    }
    
    watcher.EventArrived += new EventArrivedEventHandler(workaround);
    

    根据您的帖子。干杯。

    【讨论】:

      【解决方案2】:

      这不可能的原因是EventArraivedEventHandlerEventHandler 有不同的签名。如您所见,EventArrivedEventHandler 作为第二个参数 EventArrivedEventArgs 而不是 EventArgsEventHandler 那样。

      public delegate void EventArrivedEventHandler(object sender, EventArrivedEventArgs e)
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2013-06-11
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 2021-10-22
        相关资源
        最近更新 更多