首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务阻塞队列

任务阻塞队列
EN

Stack Overflow用户
提问于 2015-03-07 05:35:25
回答 1查看 497关注 0票数 0

问题:我有文件系统显示文件,我想通过WCF上传它们。我想要的是将最大并行数限制在一些ThreadMaxConcurrency上

其思想是在blockingQueue中利用生产者-消费者模式。生产部件为- UploadNewFile、CreateFolder等.

我所忽视的是消费者的部分。而且我不知道的是.延迟单个任务--例如,不要在FolderWasCreated之前为它们上传新文件。

我使用的是.NET 4.5,我不知道如何使用BlockingQueue,也不知道如何正确地监视是否有任务,以及如何监视,以及如何将一些任务推迟到另一个任务完成(我想,将它们重新排到最后才能工作)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-07 12:24:37

您应该使用TPL数据流,它是一个为您所做的一切的框架。创建一个AcionBlock,给它一个委托并设置它为MaxDegreeOfParallelism

它应该看起来类似于这样:

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28911768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档