IPの存在を確認するために、ネット3.5でpingライブラリを使用しています。
以下のコードを見てください。
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();
さて、問題は次のとおりです。
スレッドを開始すると、アプリケーションを閉じます (隅にあるコントロールボックスで閉じます)。スレッドを閉じたり中止したりしても、「App Crash」が発生します。
問題はイベントハンドラだと思いますか? 「アプリクラッシュ」が発生するように、アプリケーションを閉じているときにまだ機能しているため
このケースを解決する最善の方法は何でしょうか?