task-parallel-library
全部标签 交叉发布到http://social.msdn.microsoft.com/Forums/en-US/tpldataflow/thread/89b3f71d-3777-4fad-9c11-50d8dc81a4a9我知道...我并没有真正发挥TplDataflow的最大潜力。ATM我只是使用BufferBlock作为消息传递的安全队列,其中生产者和消费者以不同的速率运行。我看到一些奇怪的行为,让我不知所措继续。privateBufferBlockmessageQueue=newBufferBlock();publicvoidSend(objectmessage){varaccepted=
这是我注意到的一些非常奇怪的事情。我正在编写CRM2011Silverlight扩展,在我的本地开发实例上一切正常。该应用程序使用OData进行通信,并大量使用System.Threading.Tasks.Task来执行后台的所有操作(FromAsync是一种祝福)。但是,我决定在CRM2011Online中测试我的应用程序,令我惊讶的是,它不再有效;结束检索任务时我会收到安全异常。使用Fiddler,我发现CRM试图将我重定向到Live登录页面,考虑到我已经登录,这没有多大意义。经过更多尝试,我发现错误是因为我从与UI线程不同的线程访问服务。这是一个简单的例子://thiswillw
我们的应用程序使用TPL来序列化(可能)长时间运行的工作单元。工作(任务)的创建是用户驱动的,可以随时取消。为了拥有一个响应式的用户界面,如果不再需要当前的工作,我们想放弃我们正在做的事情,并立即开始一个不同的任务。任务排队是这样的:privateTaskworkQueue;privatevoidDoWorkAsync(Actioncallback,CancellationTokentoken){if(workQueue==null){workQueue=Task.Factory.StartWork(()=>DoWork(callback,token),token);}else{wor
图表1:将异步(不是async!)网络调用包装到Task中的一些代码publicstaticTaskGetAsync(IConnectionconnection,uintid){ReadDataJobjobRDO=newReadDataJob();//NooverloadofFromAsynctakes4extraparameters,sowehavetowrap//BegininaFuncsothatitlookslikeittakesnoparametersexcept//callbackandstateFuncwrapped=(callback,state)=>jobRDO.Be
我正在尝试以编程方式在C#4中链接异步操作,例如写入给定的Stream对象。我最初是“手动”执行此操作的,将回调从一个操作Hook到下一个操作,但我想我会尝试使用.NET4任务并行库来省去重新发明并发轮子的麻烦。首先,我将异步调用包装在任务中,如下所示:publicstaticTaskCreateWriteTask(Streamstream,byte[]data){returnTask.Factory.FromAsync(stream.BeginWrite,stream.EndWrite,data,0,data.Length,null);}Continuations使链式同步操作变得非
Bydefault,theCLRrunstasksonpooledthreads,whichisidealforshort-runningcompute-boundwork.Forlonger-runningandblockingoperations,youcanpreventuseofapooledthreadasfollows:Tasktask=Task.Factory.StartNew(()=>...,TaskCreationOptions.LongRunning);我正在阅读有关thread和task的主题。你能给我解释一下什么是“长时间运行”和“短期运行”任务吗?
我发现命名线程在调试时非常有用。我看不出有什么方法可以使用Task.Factory.StartNew()的参数来命名线程那么在任务中显式命名线程是否可以接受?例如:privatevoidMyFunc(){Task.Factory.StartNew(()=>{Thread.CurrentThread.Name="Foobulizer";Foobulize();});}但是,我很欣赏线程可能会被不同的任务重用,所以我是否需要在任务结束时显式地重置线程名称?这感觉很老套,所以我认为这可能是个坏主意,或者有正确的方法来做到这一点? 最佳答案
我刚遇到一些代码,例如:vartask=Task.Run(async()=>{awaitFoo.StartAsync();});task.Wait();(不,我不知道Foo.StartAsync()的内部工作原理)。我最初的react是摆脱async/await并重写为:vartask=Foo.StartAsync();task.Wait();这是否正确(同样,对Foo.StartAsync()一无所知)。This回答Whatdifferencedoesitmake-runningan'async'actiondelegatewithaTask.Run...似乎表明在某些情况下它可能有
这段代码怎么可能TaskManager.RunSynchronously(fileMananager.BackupItems,package);导致编译错误Thecallisambiguousbetweenthefollowingmethodsorproperties:'TaskManager.RunSynchronously(System.Action,MyObject)'and'TaskManager.RunSynchronously(System.Func,MyObject)'当Action的签名是publicvoidBackupItems(MyObjectpackage)和“模
我在C#中使用.NET4.0任务并行库(我第一次使用TPL)我有一个任务A,我想在启动一堆其他任务(B、C、D等)之前将其运行至完成。因此,我想创建任务B、C、D等作为任务A的延续。但是,我想将一个“状态”对象传递给任务B,将另一个状态对象传递给任务C,等等。我可以通过简单地使用带有状态对象的任务构造函数重载将状态对象传递给任务A,例如http://msdn.microsoft.com/en-us/library/dd783035.aspx描述了这个Task构造函数重载:Task(Action,Object,CancellationToken)这很好用,第二个参数是我的“状态”对象。我