我正在开发ping应用程序,其中我有一个进度条,显示范围IP的ping操作进度。
这是我如何计算要设置为进度条最大值的IP范围:
pbProgress.Maximum = 1 + (IPAddress.NetworkToHostOrder
(BitConverter.ToInt32(IPAddress.Parse(txtTo.Text).GetAddressBytes(), 0)) -
IPAddress.NetworkToHostOrder(BitConverter.ToInt32
(IPAddress.Parse(txtFrom.Text).GetAddressBytes(), 0)));
这里的问题是我将范围从0.0.0.0开始到1.0.0.0,需要花费大量时间来计算范围,因此将值传递给进度条最大值。有没有更好的解决方案来更快地计算IP数量?
我总是可以将IP地址限制为例如ping到10k地址,但我只是不想限制此程序的任何功能。
有什么想法吗?
答案 0 :(得分:1)
您的问题是您正在创建一些包含每个IP地址的数据结构,如列表或数组。你需要做的就是用for
循环来迭代它们,这样它们就可以根据需要而不是在你开始之前生成。
由于您要使用多个线程,请尝试使用Parallel.For
。