7得票1回答
为什么抛出OperationCanceledException会得到不同的结果?

我的同事正在使用TPL和任务取消。他向我展示了以下代码: var cancellationToken = cts.Token; var task = Task.Run(() => { while (true) { Thread.Sleep(300); ...

9得票2回答
最大并行度决定最佳值

简单问题。 对于任何给定的算法,如何确定MaxDegreeOfParallelism的最佳值?需要考虑哪些因素以及需要权衡哪些方面?

152得票3回答
需要了解SemaphoreSlim的使用方法

这里是我目前的代码,但我不理解SemaphoreSlim在做什么。async Task WorkerMainAsync() { SemaphoreSlim ss = new SemaphoreSlim(10); List<Task> trackedTasks = n...

9得票2回答
ASP.Net MVC 4控制器在使用async时会挂起

我正在使用带有.NET 4.5和ASP MVC 4 RC的Visual Studio 2012 RC。每当我使用异步操作时,它就会挂起。控制器动作方法使用了异步操作,但它本身不是异步控制器方法。没有记录错误或抛出异常,但浏览器永远显示“等待www.myweb.local”。 // Simpl...

8得票2回答
一个TPL Dataflow块下游如何获取由源产生的数据?

我正在使用TPL Dataflow处理图像。我接收到一个处理请求,从流中读取图像,应用多个转换,然后将结果图像写入另一个流: Request -> Stream -> Image -> Image ... -> Stream 为此,我使用块: BufferBlo...

22得票1回答
在CancellationToken.ThrowIfCancellationRequested之后,故障状态与取消状态的任务状态是什么?

通常我不会发布一个带有答案的问题,但这次我想吸引一些关注,因为我认为这可能是一个模糊但普遍存在的问题。它是由 这个问题触发的,自那时以来,我审查了自己的旧代码,并发现其中一些也受到了影响。 下面的代码启动并等待两个任务task1和task2,它们几乎相同。 task1 与 task2 的唯一...

8得票3回答
C#中Task<T>和TaskContinuationOptions的澄清?

我有这样一个简单的代码: var g= Task.Factory.StartNew&lt;int&gt; (() =&gt; 8) .ContinueWith (ant =&gt;{throw null;}) .ContinueWith (a =&gt;{ Co...

8得票1回答
异步计算无法捕获OperationCancelledException异常。

我正在尝试对一个URL进行异步网络请求,如果请求时间过长就会返回。我使用F#的异步工作流和System.Net.Http库来完成这个任务。 然而,我无法在async工作流中捕获System.Net.Http库引发的Task/OperationCancelledExceptions异常。相反,...

24得票3回答
允许异步方法一次只能被调用一个实例

我有一个方法,不能同时在多个线程中执行(它会写文件)。我不能使用lock,因为该方法是async的。如何避免在另一个线程中调用该方法?程序不应该再次调用它,而应该等待前一个调用完成(也是异步的)。 例如,创建一个新的C#控制台应用程序,并使用以下代码:using System; using ...

24得票7回答
为什么你想要使用ContinueWith而不是简单地将你的继续代码追加到后台任务的末尾呢?

MSDN文档中关于Task.ContinueWith的说明只有一个代码示例,其中一个任务(dTask)在后台运行,然后(使用ContinueWith)跟着第二个任务(dTask2)。示例的要点如下所示; Task dTask = Task.Factory.StartNew(() =&gt; ...