多线程网络扫描仪

时间:2015-07-27 01:14:29

标签: c# multithreading network-programming scanning

我一直在尝试使用Backgroundworker在for循环中为该范围内的每个IP地址创建一个有效的多线程网络扫描程序,但遇到了以下问题:

1)UI线程总是间歇性地冻结,在此期间内存使用量大大增加,有时高达2-3GB用于255 IP地址扫描。

2)即使在为每个IP创建新的Backgroundworker之间的循环中没有延迟,也只产生最多30-40个线程。

生成每个线程的代码如下所示。还有更好的方法吗?

for (int i = 0; i < _deviceList.Count; i++)
            {
                _bgw = new BackgroundWorker();
                _bgw.WorkerSupportsCancellation = true;
                _bgw.WorkerReportsProgress = true;
                _bgw.DoWork += _bgw_DoWork;
                _bgw.ProgressChanged += _bgw_ProgressChanged;
                _bgw.RunWorkerCompleted += _bgw_RunWorkerCompleted;
                _bgw.RunWorkerAsync(_deviceList[i]);
            }

0 个答案:

没有答案