是否有C#等同于JavaCompletionService来对已完成的线程作出反应?有很多关于如何等待所有“worker”完成的示例,但是当每个worker以与Java的CompletionService相同的方式完成时会发生什么?我破解了一些有用的东西,但这看起来很脆弱:intcompletedWorkers=0;while(completedWorkerstask.ContinueWith(antecedent=>{lock(tasks)//只有当你想避免递增和写入之间的竞争时才需要{int_index=index;//避免关闭issuecompletedWorkers++;//如果锁被移除,替换为:Interlocked.Increment(refcompletedWorkers);Console.WriteLine("Worker{0}hascompleted.{1}havenowcompleted.",_index,completedWorkers);}}));Task.WaitAll(continuations.ToArray());Console.WriteLine("所有线程执行完毕");我在这里找到了一个需要.NET4.5的示例:http://msdn.microsoft.com/en-us/library/jj155756.aspx这就是C#学习教程的内容:IsthereaC#equivalentoftheJavaCompletionServicetoreactto完成线程?分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——//***添加一个循环,一个一个的处理任务,直到一个都没有。while(downloadTasks.Count>0){//确定第一个完成的任务。任务firstFinishedTask=等待任务。WhenAny(下载任务);//***删除选择d任务,这样你就不会//??多次处理它。下载任务。删除(firstFinishedTask);//等待完成的任务。intlength=awaitfirstFinishedTask;resultsTextBox.Text+=String.Format("下载长度:{0}",length);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: