2012-12-05 59 views
-1

有一些方法,被称为像同步:异步执行等待任何

tasks.ForEach(p=> Proccess(p)); 

void Proccess(){ 
    //do some long running work 
} 

我怎么可以做这样的事情,在伪代码:

tasks.ForEach(p=> Async(Proccess(p)); 
WaitForAny(); 

在这里,我想打电话给任务异步,并等待任何执行结束(不是全部)。 u能plz帮助我,没有从.NET 4

+0

是在你的伪上面的代码?如果它是实际的代码,你可以发布任务对象的定义吗? – ryadavilli

+0

有点编辑,他们只是功能。 –

回答

1

并行任务看一看Task.WaitAny

Task[] tasksToWaitFor = new Task[itemsToCall.Length]; 
foreach (int i = 0; i < itemsToCall.Length; i++) 
{ 
    var itemToCall = itemsToCall[i]; 
    tasksToWaitFor[i] = Task.Factory.StartNew(() => itemToCall.Call()); 
} 

await Task.WaitAny(tasksToWaitFor); 

http://msdn.microsoft.com/en-us/library/dd270672.aspx

+0

它是.net 4.我只能使用3.5或2 –

+0

如果可能,我会尝试迁移到.NET 4或.NET 4.5。否则,你将不得不使用Threads或Backgroundworkers推出你自己的任务版本 – cordialgerm