C# 如何连续ping并更改图像的结果

C# 如何连续ping并更改图像的结果,c#,multithreading,loops,ping,C#,Multithreading,Loops,Ping,希望你能帮我 我遇到了一个问题,如何循环一段ping代码,如果真或假改变了一幅图像,结果会如何 这是我的代码,按一下按钮 我的目标是基本上自动运行应用程序,这样用户就不必单击刷新图标 我读了一些书,我想我可以使用while循环,但我不确定如何使用sleep 另一种方法是使用睡眠线程 我也在MSDN上要求获得尽可能多的反馈 //Declaration of Global Variables (IP's) public static string IP1, IP2, IP3;

希望你能帮我

我遇到了一个问题,如何循环一段ping代码,如果真或假改变了一幅图像,结果会如何

这是我的代码,按一下按钮

我的目标是基本上自动运行应用程序,这样用户就不必单击刷新图标

我读了一些书,我想我可以使用while循环,但我不确定如何使用sleep

另一种方法是使用睡眠线程

我也在MSDN上要求获得尽可能多的反馈

    //Declaration of Global Variables (IP's)
    public static string IP1, IP2, IP3;

    //Method Setting Variables(IP's)
    public static void setIP()
    {

        IP1 = Properties.Settings.Default.settingIP1;
        IP2 = Properties.Settings.Default.settingIP2;
        IP3 = Properties.Settings.Default.settingIP3;
    }

    //Method running Ping command
    public static bool PingTest(string toPing)
    {
    string host = toPing;
    bool result = false;
    Ping p = new Ping();

    try
    {
        PingReply reply = p.Send(host, 3000);
        if (reply.Status == IPStatus.Success)
            return true;
    }
    catch { }
    return result;
    }

    //Refreshes IP1 then changes label to result
    private void btnRefreshIP1_Click(object sender, RoutedEventArgs e)
    {
        setIP();
        bool isConnected = false;
        isConnected = PingTest(IP1);

        if(isConnected == true)
        {
            lblsIP1.Foreground = Brushes.White;
            lblsIP1.Content = "Online";
        }
        else
        {
            lblsIP1.Foreground = Brushes.Red;
            lblsIP1.Content = "Offline";
        }

    }

计时器!这对您有意义吗?使用Dispatcher定期触发事件。我个人会将其移动到一个单独的类中,将ping放入计时器,存储当前状态,并为丢失、获得、成功、失败、更改等添加自定义事件。然后您可以轻松地将映像更改代码附加到事件处理程序。如果你正在监视许多站点,那么它将变得非常好用。嘿,伙计们,谢谢你们的回复!为了回答Alexei,我所说的automise是指用户不必点击刷新按钮,cope只需在运行时循环,是的,我不确定我的电脑是否更正了您所说的话,您正在监控3个IP-如果您先将其移动到自己的类中,您只需创建3个实例即可,简化了操作。类不仅仅是组织代码的一种方式。