草庐IT

任务队列

全部标签

c# - 如何创建任务<>我可以手动完成

在对组件进行单元测试时,我需要验证组件如何对在不同时间完成的任务使用react。如何创建Task我可以随意解决? 最佳答案 您可以使用TaskCompletionSource创建一个完全“手动”的任务。RepresentstheproducersideofaTaskunboundtoadelegate,providingaccesstotheconsumersidethroughtheTaskproperty.将完成源的Task属性交给消费者,并(随意)调用SetResult来完成任务。请注意,您还有SetCanceled和SetE

c# - 如何在 ASP.NET Web API 中对后台任务进行排队

我有一个webapi,旨在以队列方式处理报告。应用程序执行的步骤如下:接收内容将内容映射到一个对象并将其放入队列轮询队列中的未决项目一次处理一个队列中的项目我在考虑使用EntityFramework来创建一个队列项目的数据库,例如:publicclassEFBatchItem{[Key]publicstringBatchId{get;set;}publicDateTimeDateCreated{get;set;}publicDateTimeDateCompleted{get;set;}publicstringBatchItem{get;set;}publicBatchStatusSta

c# - 在 C# 中启动许多异步任务的语法

我在使用C#中的新异步/等待工具时遇到问题。这是我的场景:staticasyncTaskManageSomeRemoteTask(intId,boolflag){varresult=awaitserviceClient.AuthenticateIdAsync(Id);[...SetupSomeData...]awaitserviceClient.LongAndSlowRemoteCallAsync(Data);}staticvoidSendATonOfJunkToSomeWebServiceThatDoesntSupportBatches{varmyTasks=Dictionary>(

c# - 可观察的堆栈和队列

我正在寻找Stack和Queue的INotifyCollectionChanged实现。我可以自己动手,但我不想重新发明轮子。 最佳答案 我遇到了同样的问题,想与其他人分享我的解决方案。希望这对某人有帮助。publicclassObservableStack:Stack,INotifyCollectionChanged,INotifyPropertyChanged{publicObservableStack(){}publicObservableStack(IEnumerablecollection){foreach(varitem

c# - 分钟内的 Hangfire 重复任务

有没有办法每隔几秒设置hangfire重复作业?我不寻求一种即发即弃任务会产生另一个即发即忘任务的解决方案,如果不是,建议的替代方案是什么? 最佳答案 不确定何时支持此功能,但在ASP.NETCore2.0和Hangfire1.7.0中尝试过此功能。以下代码每20秒安排一次作业:RecurringJob.AddOrUpdate(x=>x.DoWork(),"*/20*****");如果我没记错的话,由于Hangfire使用了NCrontab,所以支持6个token(而不是标准的5个token)它允许具有6个标记的cron表达式(第二

c# - 无法确定具有指定格式名称的队列是否存在

执行以下代码时出现异常。有什么想法吗?stringqueueName="FormatName:Direct=TCP:1.1.1.1\\Private$\\test";MessageQueuequeue;if(MessageQueue.Exists(queueName))queue=newSystem.Messaging.MessageQueue(queueName);elsequeue=MessageQueue.Create(queueName);queue.Send(sWriter.ToString());编辑:这是异常消息和堆栈跟踪的第一行Cannotdeterminewhethe

c# - 任务链(等待上一个任务完成)

vartasks=newList();foreach(varguidinguids){vartask=newTask(...);tasks.Add(task);}foreach(vartaskintasks){task.Start();Task.WaitAll(task);}这是UI线程的运行。我需要一个接一个地执行任务变量中的所有任务。问题是如果我调用Task.WaitAll(task),UI会卡住。如何在不卡住UI的情况下执行以下逻辑? 最佳答案 这不是任务链。您需要使用ContinueWith进行任务链接。最后一个任务需要更新

c# - 消息队列系统

我正在编写一个消息队列系统。我的问题是......用文件或数据库来做这个队列更好吗?如果我选择数据库,它需要每秒检查新作业,这对我来说似乎有点开销?如果是文件,我猜你只是不断地监视文件夹并根据它执行?BR, 最佳答案 不要reinventthewheel.[编辑:2014年更新,现在链接到rabbitMQ,因为Ayende已经开始制作文档数据库而不是消息队列,但RabbitMQ又出现了。我不会写这篇文章,但现在帖子需要30个字符,所以我需要多说几句。] 关于c#-消息队列系统,我们在St

c# - CancellationToken.ThrowIfCancellationRequested 后的故障与取消任务状态

通常我不会发布带有答案的问题,但这次我想引起一些人对我认为可能是一个晦涩但普遍的问题的关注。它是由thisquestion触发的,从那以后我检查了我自己的旧代码,发现其中一些也受此影响。下面的代码启动并等待两个任务,task1和task2,它们几乎相同。task1与task2的唯一区别在于它运行一个永无止境的循环。IMO,这两种情况对于一些执行CPU密集型工作的现实场景来说都是非常典型的。usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceConsoleApplication{publicclas

c# - 带有 await 的异步 lambda 表达式返回任务?

我有以下代码://Getallofthefilesfromthelocalstoragedirectory.varfiles=awaitfolder.GetFilesAsync();//Mapeachfiletoastreamcorrespondingtothatfile.varstreams=files.Select(asyncf=>{returnawaitf.OpenStreamForWriteAsync();});我希望streams类型为IEnumerable但实际上是IEnumberable>,如果我省略了await关键字,这就是我所期望的。OpenStreamForWrit