.net 我该怎么做?(使用计时器)

本文关键字:计时器 我该怎么做 net | 更新日期: 2023-09-27 18:37:28

有WinForms应用程序。其功能(例如)- 在公司域中执行 ping 操作。假设用户在应用程序中为 ping 创建了两个对象 - Comp1 和 Comp2。大多数主要功能 - 程序应该为用户提供选择 - 通过您需要ping的计算机类型进行初始化。例如,Comp1 用户希望每分钟监视一次的可用性,而 Comp2 的可用性 - 每 15 分钟监视一次。如何在 .NET 上实现它?以编程方式为每个新的 Comp [数字] 计时器对象创建?

也许有人已经遇到过这样的挑战,一个很大的请求帮助我。

.net 我该怎么做?(使用计时器)

如果你想查看 Comp2 是否可以从 Comp1 访问(网络方面),你可以在 Comp1 上运行以下代码

Ping ping = new Ping();
PingReply reply = new Ping().Send(Comp1IP);
return reply.Status == IPStatus.Success

另一个想法 - 只创建一个通用计时器 tmrTimer,它将每分钟运行一次。应用程序将保留在每个 Comp [数字] 刷新间隔和上次 ping 时间的数据库/内存中。在每分钟的行程中,tmrTimer_Tick将检查每个 Comp [编号] 的所有数据。如果差(当前时间 - 最后一个 ping Comp [数字])>而不是此 Comp [数字] 的所需刷新间隔 - 应用程序将 ping Comp [数字],为他更新最后一个 ping 当前时间......

是不是太容易了?

您必须使用 2 个计时器。

制作一个 winform,允许用户使用 NumericUpDown 控件选择时间间隔,或者找到更好的方法。

将间隔设置为指定的毫秒(60000 = 1 分钟,900000 = 15 分钟) 滴答事件将启动 ping 通过

- 平级:

MSDN 上的 Ping 类

 public static int GetPing(string ip, int timeout)
    {
        int p = -1;
        using (Ping ping = new Ping())
        {
                PingReply reply = ping.Send(_ip, timeout);
                if (reply != null)
                    if (reply.Status == IPStatus.Success)
                        p = Convert.ToInt32(reply.RoundtripTime);
        }
        return p;
    }

-命令提示符

这是您通过cmd发送命令的方式,因此您将不使用.net framwework,而是使用内置工具的窗口:

string strCmdText;
strCmdText= "timeout 60 & ping 127.0.0.1";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);
超时 60

将等待 60 秒,然后它会 ping。然后,您将在屏幕上看到ping是否失败

要仅使用单个计时器,请将刻度设置为一分钟,并在刻度中增加一个计数器变量。每次逐笔报价(1 分钟)它将 ping comp1,当计数器 15 的模数为 0 时(计数器 % 15 == 0),您将 ping comp2

相关文章: