本人新手请教一下如果我在C#的窗体模式下编程得到了一组网址,想用几个线程分别去访问这些网址的HTML代码,,,怎么才能让线程操作不重复?
比如:
如果用3个线程去访问上面的地址,怎么才能不重复操作,最好有个简单且高效的例子谢谢前辈们了
假设你有x条网址,你想用n个线程同时操作他们,关键点就是要把x条分成n组。
string[] urls = Enumerable.Range(1, 10).Select(x => "http://www.abc.com/" + x + ".html").ToArray();
//urls里就是你要处理的所有地址,这里我生成了10条测试数据,http://www.abc.com/(1-10).html
int n = 3; //分成3个线程处理
var threads = urls.Select((url, index) => new { Index = index, Url = url })
.GroupBy(a => a.Index % n) //根据模n的结果分组,那么 [1,4,7,10]一组,[2,5,8]一组……
.Select(g => new Thread(() =>
{
foreach (var u in g)
{
Console.WriteLine("Group " + g.Key + " Url: " + u.Url);
//这里我只是简单输出了一下
}
}))
.ToList();
//你要的就在threads变量里,它是一个List<Thread>
foreach (var thread in threads)
{
thread.Start();
}
谢谢朋友这个方法不错。。。。