因此,我有一個文本框,其中輸入了需要ping的PC的名稱。我跑平丟失焦點時:C#在焦點遺失和遺失值向文本框引發焦點丟失後,在背景上運行Ping
private void Name_LostFocus(object sender, System.EventArgs e)
{
if (PCIsOnline(textBox.Text))
{
textBox.Background = Brushes.LightGreen;
}
else
{
textBox.Background = Brushes.LightSalmon;
}
}
PCIsOnline看起來是這樣的:
public static bool PCIsOnline(string arg)
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 40;
try
{
PingReply reply = pingSender.Send(arg, timeout,
buffer, options);
if (reply.Status == IPStatus.Success)
return true;
else
return false;
}
catch
{
return false;
}
}
當電腦處於聯機狀態,一切都很好,我沒有得到任何凍結,但是當PC處於脫機狀態我的應用程序將會凍結一段時間。我知道,離線PC需要時間。但我的問題是這樣的:我如何在後臺啓動ping,何時結束這將改變啓動ping的文本框的背景顏色,具體取決於ping的結果。
我讀過一些關於這方面的話題,運行ping async,但這對我的情況沒有什麼幫助,至少我無法在我的代碼中實現它。
檢出[BackgroundWorker](http://msdn.microsoft.com/en-us/library/cc221403(v = vs.95).aspx)。 – Vlad 2014-11-14 16:10:35
我想我的腦凍結以及bw看起來像最簡單的方式來做我想做的,但我不明白我應該如何實現它。我的代碼示例將非常有幫助。謝謝你的任何方式:) – BolnoYGaD 2014-11-14 16:46:25
好的,我能夠適應BW到我的代碼。我使用Amandeep Saini的例子answer =) – BolnoYGaD 2014-11-14 18:00:44