我正在使用下面的代碼來啓動一個異步ping的負載。我還有一個由PingCompletedEventHandler調用的函數,該函數將成功ping的地址添加到列表中供以後使用。如何等待所有在C#中完成的異步ping命令?
我想知道一旦所有的ping線程完成後,如何調用一個函數?
public static void PingRange(IPRange range)
{
foreach (IPAddress ip in range.GetAllIP())
{
// Create Pinger
AutoResetEvent waiter = new AutoResetEvent(false);
Ping pingSender = new Ping();
pingSender.PingCompleted += new PingCompletedEventHandler(pingSender_PingCompleted);
// Create a 32 byte data buffer
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
// Wait 4 seconds for a reply
int timeout = 4000;
PingOptions options = new PingOptions(64, true);
pingSender.SendAsync(ip, timeout, buffer, options, waiter);
PingStartCount++;
}
}
你可以使用Thread.Join();方法也許如果你把這個方法放到你應該開始的所有線程中。 – Burimi