我想遍历一个 URL 列表并检查每个 URL 是否该网站已关闭或未使用多个线程。
我的做法:
while (_lURLs.Count > 0)
{
while (_iRunningThreads < _iNumThreads)
{
Thread t = new Thread(new ParameterizedThreadStart(CheckWebsite));
string strUrl = GetNextURL();
if (!string.IsNullOrEmpty(strUrl))
{
t.Start(strUrl);
_iRunningThreads++;
}
else
{
break;
}
}
}
private string GetNextURL()
{
lock (_lURLs)
{
if (_lURLs.Count > 0)
{
string strRetVal = _lURLs[0];
_lURLs.RemoveAt(0);
return strRetVal;
}
else
{
return string.Empty;
}
}
}
当一个线程完成时,该_iRunningThreads
属性会递减。
我的问题是:外部 while 循环阻止了所有“ while (_lURLs.Count > 0)
”。在外部 while 循环中添加 aApplication.DoEvents()
会有所帮助,但我想使用 ac# 库中Application.DoEvents()
不可用的代码。
谢谢你的帮助。