2016-03-05 50 views
-4

有WinForms應用程序。 其功能(例如) - Ping公司域中的機器。 讓我們想象一下,用戶在應用程序中爲ping創建了兩個對象 - Comp1和Comp2。 最主要的功能 - 程序應該給用戶一個選擇 - 通過你需要ping什麼樣的計算機intverval。 例如,Comp1用戶的可用性想要每隔15分鐘監控每分鐘和Comp2可用性。我如何在.NET上實現它?以編程方式爲每個新的Comp [編號]計時器對象創建?.Net我怎麼能這樣做? (使用定時器)

也許有人已經遇到了這樣的挑戰,一個大請求幫助我..

+0

使用您的場景的調度計時器。 – VVN

+0

請閱讀[問]。您的標題*尖叫*請downvote我 – Plutonix

+0

Pluonix,謝謝!我將在下次考慮它 –

回答

1

如果你想看看是否是Comp2的訪問(網絡明智)從器Comp1,你可以在器Comp1

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

謝謝,我知道我可以做到這一點... 我正在尋找許多定時器的desicion ... –

0

另一個想法 - 只創建一個通用計時器tmrTimer,它將每分鐘運行一次。 應用程序將保留數據庫/內存中每個Comp [number]刷新間隔和上次ping的時間。 在每分鐘行程tmrTimer_Tick將在每個小樣[數字]的所有的數據進行檢查。 如果差值(當前時間 - 最後平比較[數字])>比這個組合[數字]所需的刷新間隔 - 應用程序將坪比較[數字],更新的最後一個平的當前時間他...

是不是太容易了?

1

你必須使用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

相關問題