从ElapsedEventHandler返回一个值

时间:2009-09-01 19:10:13

标签: c#

如何从ShowStatus过去的事件中返回一个值?这是我的代码。我想将结果返回为YES或NO。

谢谢..

        Timer1 = new System.Timers.Timer();
        Timer1.Elapsed += new ElapsedEventHandler(ShowStatus);
        Timer1.Interval = 30000;
        Timer1.Enabled = true;

   public void ShowStatus(object source, ElapsedEventArgs evt)
    {
        try
        {
            Timer1.Enabled = false;
            string result;

            IPAddress ip = "127.0.0.1";

            result = FindStatus(ip.ToString()) ? YES: NO;
        }
        Timer1.Enabled = true;
    }

    public bool FindStatus(string ip)
    {
        Ping p = new Ping();
         ingOptions opts = new PingOptions();
            opts.DontFragment = true; 
            PingReply rc = p.Send(ip, 120, buff, opts);
            if (rc.Status.Equals(IPStatus.Success)) return true;
            return false;
    }

1 个答案:

答案 0 :(得分:0)

不可能改变ShowStatus的签名,因为它必须匹配ElapsedEventHandler委托。

您必须使用成员变量将当前状态传达给其他方法:

private bool statusFound;

protected void ShowStatus(object source, ElapsedEventArgs evt)
{
    // ...
    statusFound = FindStatus(ip.ToString());
    // ...
}