C# 如何计算IP的数量';从2个IP地址中选择s更有效?

C# 如何计算IP的数量';从2个IP地址中选择s更有效?,c#,ip,range,ping,C#,Ip,Range,Ping,我正在开发Ping应用程序,其中有一个进度条,显示范围IP的Ping进度 这是我计算IPs范围以设置为进度条的最大值的方式: pbProgress.Maximum = 1 + (IPAddress.NetworkToHostOrder (BitConverter.ToInt32(IPAddress.Parse(txtTo.Text).GetAddressBytes(), 0)) - IPAddress.NetworkToHostOrder(BitConverter.ToInt32

我正在开发Ping应用程序,其中有一个进度条,显示范围IP的Ping进度

这是我计算IPs范围以设置为进度条的最大值的方式:

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数

我可以给ping设置一个IP地址限制,比如10k地址,但我不想限制这个程序的任何功能


有什么想法吗?

您的问题是,您正在创建一些数据结构,如列表或数组,其中包含每个IP地址。您所需要做的就是使用类似于
for
循环的方法对它们进行迭代,以便根据需要而不是在开始之前生成它们


由于要使用多个线程,请尝试使用。

将它们转换为int,然后计算差值。有很多复制品。还在做那个项目吗D@BlackBear)我注意到,如果范围太大,我的程序会被卡住大约10分钟,所以我想解决这个问题。“可怕的时间”是多少?在我的电脑上,这不到1ms。@Gabe:我想他说的是ip地址的总运行时间,包括ping时间啊,所以你是说基本上我在创建大量数据并将其放入内存?这很奇怪,我想你可能有一些好的观点。虽然我不明白为什么它在没有线程的情况下运行得很快。我必须再核实一下。谢谢。好的,我找到了问题的原因。这不是计算(正如我最初所想),但我有一个for循环,它在其他线程上加载每一个ping,使应用程序内存占用。