我正在使用 net 3.5 中的 ping 库来检查 IP 的存在。
看看下面的代码:
public void PingIP(string IP)
{
var ping = new Ping();
ping.PingCompleted += new PingCompletedEventHandler(ping_PingCompleted); //here the event handler of ping
ping.SendAsync(IP,"a");
}
void ping_PingCompleted(object sender, PingCompletedEventArgs e)
{
if (e.Reply.Status == IPStatus.Success)
{
//On Ping Success
}
}
然后我通过 Thread 或 backgroundworker 执行代码。
private void CheckSomeIP()
{
for (int a = 1; a <= 255; a++)
{
PingIP("192.168.1." + a);
}
}
System.Threading.Thread checkip = new System.Threading.Thread(CheckSomeIP); checkip.Start();
那么问题来了:
如果我启动线程,那么我将关闭应用程序(在角落处使用 Controlbox 关闭),尽管我已经关闭/中止线程,但我会得到“应用程序崩溃”。
我认为问题是事件处理程序?因为当我关闭应用程序时它们仍在工作,所以我会得到“应用程序崩溃”
解决这种情况的最佳方法是什么?