【问题标题】:how i know which object call the event vb.net / C# [duplicate]我怎么知道哪个对象调用了事件 vb.net / C# [重复]
【发布时间】:2015-12-15 21:07:31
【问题描述】:

我有两个计时器我 AddHandler 到 ShowData

我怎么知道哪个计时器调用了事件

 Dim TM1, TM2 As System.Timers.Timer

        TM1 = New Timers.Timer(600000) 
        AddHandler TM1.Elapsed, AddressOf ShowData
        TM1.Start()

        TM2 = New Timers.Timer(15000) 
        AddHandler TM2.Elapsed, AddressOf ShowData
        TM2.Start()


 Private Sub ShowData()
  Dim T as string
  T =   ' here I want object name that called this event 
 'code         
 End Sub

【问题讨论】:

  • 该代码甚至无法编译。编辑您的代码以使其正确,然后重新发布它

标签: c# vb.net


【解决方案1】:

你必须使用correct signature,然后你有sender-argument 这是计时器:

Private Sub ShowData(sender As Object, e As System.Timers.ElapsedEventArgs)
    Dim timer = CType(sender, System.Timers.Timer)
    If timer Is TM1 Then

    ElseIf timer Is TM2 Then

    ElseIf timer Is TMEmail Then

    End If
End Sub

为了完整起见(和你的 C# 标签):

private void ShowData(Object sender, System.Timers.ElapsedEventArgs e)
{
    var timer = (System.Timers.Timer) sender;
    if(timer == TM1)
    {

    }
    else if (timer == TM2)
    {

    }
    else if(timer == TMEmail)
    {

    }
} 

【讨论】:

  • 效果很好,但是当我尝试使对象上的这个来自其他类时我遇到了其他问题给我这个消息:没有与委托兼容的签名
  • @user2842091:你的下一个问题不清楚,也许你应该再问一个问题并举个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2013-01-30
相关资源
最近更新 更多