for (int i = 5; i <= 15; i++)
{
string temp = string.Concat(base_IP, i.ToString());
//await Task.Delay(1000);
PingReply reply = pingsender.Send(temp, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
textbox_progress.Text = textbox_progress.Text + "Connected IP -> " + temp + "\n\r";
}
progressBar.Value++;
}
textbox_progress.Text = textbox_progress.Text + "Scanning Complete " + "\n\r";
在代码段中,进度条应该随着变量'*i *'的值的增加而增加。但是,它没有发生。进度条在循环结束后立即更新。如果我注解掉IP扫描函数并使用延迟函数,进度条工作正常。有人能帮助我修复它吗?
此外,扫描时间太长,我只是简单地发送了“abcd”来获取ping,这个小循环大约需要6秒才能完成,“timeout”的值是1 [虽然我搞不清楚“pingsender.Send()”函数是以秒还是以毫秒为单位].我
1条答案
按热度按时间lsmepo6l1#
在同一线程上执行
for
循环时,无法更新ProgressBar
。这是不可能的。使用异步
SendPingAsync
方法:尽管我搞不清楚“pingsender.send()”函数是以秒还是以毫秒为单位
timeout
参数指定等待ICMP回送应答消息的最大 * 毫秒 * 数(发送回送消息后)。