我正在尝试制作一个工具,从我提供的多个URL中获取源代码。为了实现多线程,我使用了以下代码。
new Thread(() =>
{
while (stop != true)
{
if (nowworker >= threads)
{
Thread.Sleep(50);
}
else
{
if (i <= urllist.Count - 1)
{
var thread = new Thread(() =>
{
string source = GetSource(urllist[i]);
SaveToFile(source, i + ".txt");
});
thread.Start();
i++;
nowworker += 1;
}
else
{
stop = true;
}
}
}
}).Start();
在使用较少的线程(10个线程 - 20个url)时,程序运行非常顺畅,但是在检查结果时发现有一些重复的结果和一些我提供的url丢失了。但是当使用20个线程处理20个url时就没有问题了。
请帮助我解决这个问题。谢谢。