task-parallel-library
全部标签 我正在对7500多个对象运行Parallel.For循环。在那个for循环中,我对每个对象做了很多事情,特别是调用两个Web服务和两个内部方法。Web服务只是检查对象、处理并返回一个字符串,然后我将其设置为对象的属性。两个内部方法也是如此。我没有将任何内容写入磁盘或从磁盘读取。我还使用标签和进度条更新了winforms应用程序中的UI,让用户知道它的位置。这是代码:vartask=Task.Factory.StartNew(()=>{Parallel.For(0,upperLimit,(i,loopState)=>{if(cancellationToken.IsCancellation
我的情况是我有一个正在处理的任务列表(启用驱动器、改变位置、等待停止、禁用)。“等待”监控IObservable,我想等待它(这样我就可以通过ContinueWith和其他任务来处理它)。我开始在订阅者的OnNext处理中执行以下任务,但这很丑陋。我现在想到的是这种扩展方法:publicstaticTaskWaitFor(thisIObservablesource,Funcpred){vartcs=newTaskCompletionSource();source.Where(pred).DistinctUntilChanged().Take(1)//OnCompletestheobse
考虑以下代码:CancellationTokenSourcects0=newCancellationTokenSource(),cts1=newCancellationTokenSource();try{vartask=Task.Run(()=>{thrownewOperationCanceledException("123",cts0.Token);},cts1.Token);task.Wait();}catch(AggregateExceptionae){Console.WriteLine(ae.InnerException);}由于MSDN任务应处于Faulted状态,因为它的t
在TPL中,如果Task抛出异常,该异常被捕获并存储在Task.Exception中,然后遵循observedexceptions上的所有规则.如果它从未被观察到,它最终会在终结器线程上重新抛出并使进程崩溃。有没有办法阻止Task捕获该异常,而只是让它传播?我感兴趣的任务已经在UI线程上运行(由TaskScheduler.FromCurrentSynchronizationContext提供),我希望异常转义以便它可以由我现有的Application.ThreadException处理处理程序。我基本上希望Task中未处理的异常表现得像按钮单击处理程序中的未处理异常:立即在UI线程上传
我正在开发Windows8运行时组件,因此公共(public)接口(interface)不能包含Task因为它不是Windows运行时类型。这意味着我无法将该方法标记为async不能awaitprivateasync我的库中的方法。这导致了对如何处理我的应用程序逻辑的一些困惑。这就是我同步做我想做的事情的方式。Resultr=TryGetAuthResultFromFile();if(r!=null){returnr;}r=GetAuthResultFromWebAuthenticationBroker();returnr;问题是TryGetResultFrom文件是asyncTask
根据我使用的是基于async/await的代码还是基于TPL的代码,我得到了关于清理逻辑CallContext的两种不同行为。如果我使用以下异步/等待代码,我可以完全按照预期设置和清除逻辑CallContext:classProgram{staticasyncTaskDoSomething(){CallContext.LogicalSetData("hello","world");awaitTask.Run(()=>Debug.WriteLine(new{Place="Task.Run",Id=Thread.CurrentThread.ManagedThreadId,Msg=CallC
问题的延续here:在上述问题中,我有以下函数返回一个任务类型的对象(用于增量测试目的):privatestaticTaskGetInstance(){returnnewTask((Func>)(async()=>{awaitSimpleMessage.ShowAsync("TEST");returnnewobject();}));}当我调用awaitGetInstance();时,该函数被调用(并且我假设任务已返回,因为没有抛出异常)但任务就在那里。我只能猜测我做错了。我不希望此函数返回一个已经在运行的任务(即IMPERATIVE).如何异步运行此函数返回的任务?
在.NET、Windows8和WindowsPhone7中,我有类似这样的代码:publicstaticvoidInvokeIfRequired(thisDispatcherdispatcher,Actionaction){if(dispatcher.CheckAccess()){action();}else{dispatcher.Invoke(action);}}我将如何在可移植类库中做一些事情?最好有一个与平台无关的实现。我的想法是使用WP7中不可用但肯定会很快的TPL。//PortableDispatchermustbecreatedontheUIthreadandthenmad
我正在尝试为WF4实现自定义TrackingParticipant。我可以编写Track方法,但我的实现会很慢。如何使用.NET4.0的任务并行库(TPL)实现Begin/EndTrack覆盖?我看过TPLandTraditional.NETAsynchronousProgramming但我不确定如何在这里应用它。请注意,TrackingParticipant是.NET的一部分,并且具有使用虚拟方法预定义的经典异步模式。publicclassMyTrackingParticipant:TrackingParticipant{protectedoverrideIAsyncResultBe
我阅读了很多关于TPL的文章,并找到了我们可以使用取消机制的方法。但是我被WaitHandle困住了。如果我想取消任务,我可以定义CancellationTokenSource并将它与任务一起传递,我可以使用ThrowIfCancellationRequested方法取消任务。我的问题是什么时候我需要使用WaitHandle来取消,为什么简单的取消在那种情况下不起作用?编辑MSDN链接:http://msdn.microsoft.com/en-us/library/dd997364..查看使用WaitHandle进行监听..刚刚学习TPL..请帮忙.. 最佳