有WinForms应用程序。 其功能(例如) - 在企业域中Ping机器。 让我们想象一下,用户在应用程序中为ping创建了两个对象--Comp1和Comp2。 最主要的功能 - 程序应该给用户一个选择 - 通过你需要ping什么样的计算机。 例如,Comp1用户的可用性希望每15分钟监控每分钟和Comp2可用性。 我怎样才能在.NET上实现它?以编程方式为每个新的Comp [number] Timer对象创建?
也许有人已经遇到过这样的挑战,一个很大的要求帮助我..
答案 0 :(得分:1)
如果要查看Comp2是否可以访问Comp2(网络方式),可以在Comp1上运行以下代码
Ping ping = new Ping();
PingReply reply = new Ping().Send(Comp1IP);
return reply.Status == IPStatus.Success
答案 1 :(得分:1)
你必须使用2个计时器。
制作winform,允许用户使用NumericUpDown控件选择时间间隔,或者找到更好的方法。
将间隔设置为指定的毫秒数(60000 = 1分钟,900000 = 15分钟)Tick事件将启动ping通过
- 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分钟,并在刻度中增加计数器变量。每次打勾(1分钟)它将ping comp1,当15的计数器模数为0(计数器%15 == 0)时你将ping comp2
答案 2 :(得分:0)
另一个想法 - 只创建一个通用计时器tmrTimer,它将每分钟运行一次。 对于每个Comp [number]刷新间隔和上次ping的时间,应用程序将保留在数据库/内存中。 在每分钟行程中,tmrTimer_Tick将检查每个Comp [number]的所有数据。 如果差异(当前时间 - 最后一次ping [编号])>比这个Comp [number]的所需刷新间隔 - 应用程序将ping [编号],更新最后一次ping他当前时间......
是不是太容易了?