【发布时间】:2023-11-20 14:14:01
【问题描述】:
问题:Ping 离线设备需要 10-15 秒。
目标:如果 ping 或后台工作程序运行时间超过 5 秒,我想结束/杀死/停止或任何必要的后台工作程序。 有什么建议我该怎么做?
目前,当我 ping 一台在线设备时,它会在第一秒内回复。
private void backgroundWorkerPing_DoWork(object sender, DoWorkEventArgs e)
{
string pcName = e.Argument.ToString();
lblIPAddress.Invoke((Action)(() => lblIPAddress.ForeColor = Color.Black));
lblStatus.GetCurrentParent().Invoke((Action)(() => lblStatus.Text = String.Format("Pinging {0}", pcName)));
string ipAddress = GetSinglePing(pcName);
e.Result = ipAddress;
}
private string GetSinglePing(string pcName)
{
Network net = new Network();
return net.Pinger(pcName);
}
public class Network
{
//My Ping Method
public string Pinger(string pcName, int bufferSize = 32)
{
Ping ping = new Ping();
byte[] buffer = new byte[bufferSize];
PingOptions pingOpt = new PingOptions(64, true);
try
{
PingReply pingReply = ping.Send(pcName, 100, buffer, pingOpt);
if (pingReply.Status == IPStatus.Success)
{
return pingReply.Address.ToString();
}
else
{
return "Offline";
}
}
catch
{
return "Offline";
}
}
}
【问题讨论】:
标签: c# .net backgroundworker ping