.Net我怎么能这样做? (使用定时器)

问题描述:

有WinForms应用程序。 其功能(例如) - Ping公司域中的机器。 让我们想象一下,用户在应用程序中为ping创建了两个对象 - Comp1和Comp2。 最主要的功能 - 程序应该给用户一个选择 - 通过你需要ping什么样的计算机intverval。 例如,Comp1用户的可用性想要每隔15分钟监控每分钟和Comp2可用性。我如何在.NET上实现它?以编程方式为每个新的Comp [编号]计时器对象创建?.Net我怎么能这样做? (使用定时器)

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

+0

使用您的场景的调度计时器。 – VVN

+0

请阅读[问]。您的标题*尖叫*请downvote我 – Plutonix

+0

Pluonix,谢谢!我将在下次考虑它 –

如果你想看看是否是Comp2的访问(网络明智)从器Comp1,你可以在器Comp1

运行下面的代码
Ping ping = new Ping(); 
PingReply reply = new Ping().Send(Comp1IP); 
return reply.Status == IPStatus.Success 
+0

谢谢,我知道我可以做到这一点... 我正在寻找许多定时器的desicion ... –

另一个想法 - 只创建一个通用计时器tmrTimer,它将每分钟运行一次。 应用程序将保留数据库/内存中每个Comp [number]刷新间隔和上次ping的时间。 在每分钟行程tmrTimer_Tick将在每个小样[数字]的所有的数据进行检查。 如果差值(当前时间 - 最后平比较[数字])>比这个组合[数字]所需的刷新间隔 - 应用程序将坪比较[数字],更新的最后一个平的当前时间他...

是不是太容易了?

你必须使用2个计时器。

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

在指定毫秒(60000 = 1分钟,900000 = 15分钟)Tick事件设定的时间间隔将通过

启动平 - 平类:

Ping class on MSDN

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; 
    } 

-Command提示

这是你如何通过CMD发送命令,这样你就不会使用.NET framwework,但建于工具的窗口:

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

超时60将等待60秒钟后,它会ping通。然后,屏幕上将显示ping是否失败

要仅使用一个计时器,请将滴答滴答设置为一分钟,并在滴答滴答中增加一个计数器变量。当计数器15的模数为0(计数器%15 == 0)时,每次打勾(1分钟)就会ping COMP1,您将ping COMP2