代码之家  ›  专栏  ›  技术社区  ›  Ayush

我如何知道哪个方法调用了事件处理程序

c#
  •  1
  • Ayush  · 技术社区  · 16 年前

    我有两种方法:

    private void RvListen_OPT()
    
    private void RvListen_FUT()
    

    在某个事件中,两个都调用:

    void OnRvMessageReceived(object sender, SigRvMessageEventArgs args)
    

    3 回复  |  直到 16 年前
        1
  •  3
  •   Jackson Pope    16 年前

    如果可以编辑SigRvMessageEventArgs类,则可以向其添加一个在两次调用中设置不同的字段。

        2
  •  1
  •   Bryce Fischer    16 年前

    sender将(通常)给您调用事件的对象。这可能不是因为要由调用方实际设置。

    也就是说,我不确定这是否重要。如果呼叫取决于呼叫者,则可能需要将它们设置为单独的事件。。。或者,正如Jackson所提到的,可以将args变量设置为允许OnRvMessageReceived事件对此做出响应。

        3
  •  1
  •   Gabe    16 年前

    套 sender SigRvMessageEventArgs

    private void RvListen_OPT()
    {
       OnRvMessageReceived("RvListn_OPT()", new SigRvMessageEventArgs())
    }
    
    private void RvListen_FUT()
    {
       OnRvMessageReceived("RvListn_FUT()", new SigRvMessageEventArgs())
    }
    
    void OnRvMessageReceived(object sender, SigRvMessageEventArgs args)
    {
       if(sender.ToString() == "RvListn_OPT()"){
          // do work
       }
       else if(sender.ToString() == "RvListn_FUT()"){
          // do work
       }
    }