task-parallel-library相关内容

Parallel.ForEach不断产生新的线程

当我在我的程序中使用Parallel.ForEach,我发现某些线程似乎从来没有结束。事实上,它不停地一遍又一遍产生新的线程,我没想到,绝对不希望的行为。 我能够重现此问题有以下code的,就像我的“真正”的程序,无论使用的处理器和内存的大量(.NET 4.0 code): 公共类节点 { 公共节点previous {获得;私定; } 公共节点(节点previous) ..

有没有像异步BlockingCollection与其中的任何事情; T>?

我想等待在 BlockingCollection&LT的结果; T>。取()异步的,所以我不阻塞线程。寻找这样的事情: VAR项目=等待blockingCollection.TakeAsync(); 我知道我能做到这一点: VAR项目=等待Task.Run(()=> blockingCollection.Take()); 但还挺杀死的整体思路,因为(对线程池)的 ..
发布时间:2015-11-24 16:19:38 C#/.NET

任务(System.Threading.Task)和线程之间的区别

据我了解有关任务和放大器之间的差异;线程是任务发生在线程池,而线程是,我需要通过自己管理的东西..(和任务可以被取消,并返回到线程池在他的任务结束) 但在一些博客,我读了操作系统是否需要创建任务,创建线程=>这将是更容易地创建(和销毁)的任务。 有人可以解释为什么请创建任务很简单的线程? (或者也许我失去了一些东西在这里...) 解决方案 我的认为的是什么,你在谈论当你说任务是 在一个程 ..
发布时间:2015-11-24 16:00:53 C#/.NET

不必要的异步/等待时,等待是最后一次?

我一直在处理了不少与异步计谋的最近(读每一个可能的文章,包括斯蒂芬和乔恩的最后2章),但我是来的结论,我不知道这是否是100%正确。 - 因此,我的问题 由于异步只允许字等待为present,我会离开异步一边。 AFAIU,等待是所有关于延续。 ,而不是写功能(continuational)code,写同步code。 (我喜欢把它的 callback'able 的code) 所以,当编译器达 ..
发布时间:2015-11-24 15:50:03 C#/.NET

非捕获Task.Yield的缺乏迫使我用Task.Run,​​为什么遵循?

道歉提前,如果这个问题是见仁见智为主。的 Task.Yield 版本缺乏这将没有捕捉到执行上下文中已经讨论过这里。 显然,这个功能是present以某种形式在异步CTP的早期版本,但被删除,因为它很容易被误用。 IMO,这种特性可以作为很容易被滥用为 Task.Run 本身。下面是我的意思。想象一下,有一个awaitable SwitchContext.Yield API,它的时间表延续上线程池 ..
发布时间:2015-11-24 15:48:05 C#/.NET

如何重新启动/再重复任务?

我有我使用任务并行库已经实现了一个长期运行的任务。当任务开始时,我抓住几个输入值和集合的快照,然后利用这些信息进行各种操作。如果任何这些值或集合的任务运行时更改,我想有任务完成后立即再次运行。我应该创建一个新的任务或者是有没有办法重用现有的任务?什么是启动第二循环的最佳方式? 解决方案 创建一个新的任务。 作为 ..
发布时间:2015-11-24 15:37:37 C#/.NET

为什么*不*改变一个线程池(或任务)线程的优先级?

有在网络和许多地方的计算器的其中一个是从改变线程池螺纹或第三方物流任务的优先级气馁。特别是: "你有超过一个线程池线程的状态和优先级没有控制和QUOT; "运行时管理的线程池。您可以在线程调度无法控制,也无法改变线程的优先级"。 :“你需要一个线程具有特定的优先级(如...)有几种方案中,它是适当的创建和使用线程池中的线程管理自己的线程来代替。” 不过 ..
发布时间:2015-11-24 15:36:34 C#/.NET

什么是在任务赶异常的最好方法?

使用 System.Threading.Tasks.Task< TResult> ,我要管理可能被抛出的异常。我在寻找做到这一点的最好办法。到目前为止,我已经创建了管理的呼叫内的所有未捕获的异常的基类 .ContinueWith(...) 我不知道是否有更好的方法做呢。或者,即使它是一个很好的方式来做到这一点。 公共类BaseClass的 { 保护无效ExecuteIfTa ..
发布时间:2015-11-24 15:21:34 C#/.NET

我怎样才能prevent同步延续上一个任务?

我有一些库(套筒联网)code,它提供了一个工作基于API挂起响应请求,根据 TaskCompletionSource&LT ; T> 。然而,有一个在TPL的烦恼,因为它似乎是不可能的prevent同步延续。我会的喜欢的,能够做的是两种: 告诉 TaskCompletionSource< T> 是不应该允许呼叫者与 TaskContinuationOptions.Execut ..
发布时间:2015-11-24 15:13:24 C#/.NET

创建完成的任务

我想创建一个完整的工作(而不是任务< T> )。是不是有什么内置到.NET做到这一点? 一个相关的问题: 创建一个完成任务< T> 解决方案 在最新的.NET程序(V4版本。 6)是增加了这一点,一个内置的 任务completedTask = Task.CompletedTask; 该属性是作为一个没有锁单,所以你会的几乎的始终使用相同的完成任务。 ..
发布时间:2015-11-24 15:05:30 C#/.NET

我在哪里可以找到TPL数据流的版本为4.0?

我要寻找的.NET 4.0版TPL数据流库。 本的NuGet包有一个4.0版本的库,但它似乎针对.NET 4.5。 我发现多处提到一个4.0的版本,像在这个论坛: 但刚才提到的链接重定向我到图书馆的NuGet页面。 有谁知道在哪里可以找到面向.NET 4.0的工作版本? 解决方案 我写了史蒂夫从这个问题的TPL数据流球队,他回答我用下面的下载链接: 这是一个CTP版本,但日期匹配的N ..
发布时间:2015-11-24 15:01:12 C#/.NET

AspNetSynchronizationContext伺机在ASP​​.NET延续

我注意到一个意外(和我说,冗余)后线程切换等待里面异步的ASP.NET Web API控制器的方法。 例如,下面我希望看到相同的 ManagedThreadId 在位置#2和3#,但大多数时候,我看到#3在不同的线程: 公共类的TestController:ApiController { 公共异步任务<字符串>的GetData() { 的Debug. ..
发布时间:2015-11-24 14:35:21 C#/.NET

我为什么要preFER单曲“等待Task.WhenAll”在多个等待着?

在情况下,我不关心任务完成的顺序,只需要他们全部完成,我仍然应该使用等待Task.WhenAll 而不是多个等待?例如,为 DoWord2 低于preferred方法 DoWork1 (为什么?): 使用系统; 使用System.Threading.Tasks; 命名空间ConsoleApp { 类节目 { 静态异步任务<字符串> DoTaskAsy ..

正确的方法来延迟任务的开始

我想安排一个任务开始以x ms,并能够取消它开始(或只是在任务开始)之前。 第一次尝试将类似于 VAR _cancelationTokenSource =新CancellationTokenSource(); VAR令牌= _cancelationTokenSource.Token; Task.Factory.StartNew(()=> { token.Thr ..
发布时间:2015-11-24 14:30:05 C#/.NET

为什么TaskScheduler.Current默认的TaskScheduler?

任务并行库是伟大的,我用了很多在过去几个月。然而,有一些真正困扰着我:事实上, 当前可能会导致因为其行为微妙的错误取决于你是否是内部的另一项任务是不断变化的。不能容易地确定。 假如我书面方式异步方法库,采用基于事件的标准异步模式信号的原始同步情况下完成,在相同的方式在.NET Framework XxxAsync方法做(如 DownloadFileAsync )。我决定使用任务并行库进行实施,因 ..

转换异步/等待到Task.ContinueWith

此问题是由评论这个触发: 如何备份端口非线性异步/计谋 code到.NET 4.0没有 Microsoft.Bcl.Async ? 在链接的问题,我们有一个的WebRequest 运行,我们要重新尝试的次数有限,如果它不断失败。该异步/计谋 code可能是这样的: 异步任务< HttpWebResponse> GetResponseWithRetryAsync(字符串URL,IN ..
发布时间:2015-11-24 14:24:34 C#/.NET

重温Task.ConfigureAwait(continueOnCapturedContext:假)

太长时间阅读使用 Task.ConfigureAwait(continueOnCapturedContext:FALSE)可能会引入多余的线程切换。我正在寻找一个一致的解决方案这一点。 龙版本。的主要设计背后的目标 ConfigureAwait(假)是减少多余的 SynchronizationContext.Post 继续回调等待,在可能的情况。这通常意味着更少的线程切换,少工作,对UI线程。然 ..
发布时间:2015-11-24 14:24:26 C#/.NET

图案自我消除和重新启动任务

有没有推荐的既定模式自我消除和重新启动任务? 例如,我正在后台拼写检查程序的API。拼写检查会话被包装为工作。每一个新的会话应该取消previous之一,并等待其结束(正确地重复使用资源,如拼写检查服务提供商等)。 我已经出来是这样的: 类拼写检查 { 任务pendingTask = NULL; //未决会议 CancellationTokenSource CTS = NUL ..
发布时间:2015-11-24 14:19:58 C#/.NET