问题:我有文件系统显示文件,我想通过WCF上传它们。我想要的是将最大并行数限制在一些ThreadMaxConcurrency上
其思想是在blockingQueue中利用生产者-消费者模式。生产部件为- UploadNewFile、CreateFolder等.
我所忽视的是消费者的部分。而且我不知道的是.延迟单个任务--例如,不要在FolderWasCreated之前为它们上传新文件。
我使用的是.NET 4.5,我不知道如何使用BlockingQueue,也不知道如何正确地监视是否有任务,以及如何监视,以及如何将一些任务推迟到另一个任务完成(我想,将它们重新排到最后才能工作)。
发布于 2015-03-07 12:24:37
您应该使用TPL数据流,它是一个为您所做的一切的框架。创建一个AcionBlock,给它一个委托并设置它为MaxDegreeOfParallelism。
它应该看起来类似于这样:
var block = new ActionBlock<string>(folderName =>
{
UploadFolder(folderName);
}, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 5 });
foreach (var folderName in GetFolderNames())
{
block.Post(folderName);
}
block.Complete();
await block.Completion;https://stackoverflow.com/questions/28911768
复制相似问题