我要同时取回10-20个网址的内容如果要写多线程,怎么写好?
task t = new task ();
task t2=new task();
如果我有10个我不要累死了?如果我这样写呢?
for(按网址个数循环 )
{ task t=task.factory.startnew(getweb);
}public void getweb(){...}那我怎么才能知道所有的线程执行结束了?
t.wait() ? 但感觉好像不对啊
task t = new task ();
task t2=new task();
如果我有10个我不要累死了?如果我这样写呢?
for(按网址个数循环 )
{ task t=task.factory.startnew(getweb);
}public void getweb(){...}那我怎么才能知道所有的线程执行结束了?
t.wait() ? 但感觉好像不对啊
.NET快速开发整合框架(RDIFramework.NET),基于.NET的快速开发、整合框架,给用户和开发者最佳的.Net框架部署方案。
平台博客:[CNBLOGS]http://www.cnblogs.com/huyong
[CSDN]http://blog.csdn.net/chinahuyong
交流QQ:406590790 (请注明:CSDN)
平台微博:http://t.qq.com/yonghu86
邮件交流:[email protected]
readonly object waitLock = new object();
int waitCount;
void main()
{
waitCount = 10;//任务回调次数
//异步任务,请保证onTaskFinally被回调
Monitor.Enter(waitLock);
try
{
if (waitCount != 0) Monitor.Wait(waitLock);
}
finally { Monitor.Exit(waitLock); }
}
void onTaskFinally()
{
if (Interlocked.Decrement(ref waitCount) == 0)
{
Monitor.Enter(waitLock);
try
{
Monitor.Pulse(waitLock);
}
finally { Monitor.Exit(waitLock); }
}
}
[align=left]for (int i = 0; i < 10; i++)
{
Thread mythread = new Thread(run);
mythread.Start();
}[/align]