我正在嘗試創建一個簡單的網絡工具來ping所有可能的IP在您的本地子網上,並在DataGridView中提供這樣的IP的列表。我不得不考慮線程,這對於作爲新手程序員來說是件好事。對不起,你可能不得不向我做一些解釋,但在我看來這應該起作用。在我嘗試將它放入後臺工作線程之前,應用程序會掛起並給我一個「不響應」。使用Ping映射活動IP的線程問題 - C#
提前致謝。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
count = 0;
for (int j = 1; j < 255; j++)
for (int i = 1; i < 255; i++)
{
Ping ping = new Ping();
PingReply pingreply = ping.Send(IPAddress.Parse(locip[0] + "." + locip[1] + "." + j + "." + i));
if (pingreply.Status == IPStatus.Success)
{
status = "o";
repAddress = pingreply.Address.ToString(); ;
repRoundtrip = pingreply.RoundtripTime.ToString();
repTTL = pingreply.Options.Ttl.ToString();
repBuffer = pingreply.Buffer.Length.ToString();
string[] lineBuffer = { status, repAddress, repRoundtrip, repTTL, repBuffer };
ipList.Rows.Add(lineBuffer);
count += 1;
progressBar.Value += 1;
}
}
}
所以這是或不是在BackgroundWorker?你能告訴我們你的線程設置代碼嗎? – cmw 2010-01-20 23:08:31
在設計視圖中,我添加了名爲backgroundWorker1的BackgroundWorker對象,並在button1的單擊事件上調用了 backgroundWorker1.RunWorkerAsync(); 但我再次相信問題在於ping程序和循環。在我添加BackgroundWorker之前,當這個確切的代碼出現在點擊事件中時,它會掛起並凍結(「未響應」)。 P.S.使用Visual Studio 2008 – user48202 2010-01-20 23:35:28
嗯,你正在做65536坪。其中許多人都沒有迴應。您應該將其本地化爲最終的子網。這樣做太過於有意義的方式處理。 – 2010-01-21 00:05:57