task-parallel-library相关内容
听说Task Parallel Library 可以在.Net 3.5 项目中使用.这是正确的,如果是,我该如何使用它?在 .Net 4.0 中,它驻留在 System.Threading 中,但是当我在 Visual Studio 2010 中选择 .Net 3.5 作为目标时,我无法访问 Parallel 和 Parallel 循环等类. 解决方案 (旧答案 - 3.5 的向后移植似乎
..
考虑这样一个场景,您需要完成一些异步工作,并且可以在即发即弃模式下运行它.这种异步工作能够侦听取消,因此您向它传递取消令牌以便能够取消它. 在给定的时刻,我们可以决定请求取消正在进行的活动,方法是使用我们从中获取取消令牌的取消令牌源对象. 因为取消令牌源实现了IDisposable,所以只要我们完成它,我们就应该调用它的Dispose方法.这个问题的重点是确定何时您完成了给定的取消令牌
..
我需要尽可能快地并行运行许多任务.但是如果我的程序每 1 秒运行超过 30 个任务,它就会被阻塞.如何确保每 1 秒间隔运行的任务不超过 30 个? 换句话说,如果在最后 1 秒的时间间隔内完成了 30 个任务,我们必须阻止新任务启动. 我丑陋的可能解决方案: private async Task Process(List taskList, int maxIntervalCount
..
如果我们有 aaa 任务,并且为该任务创建一个延续(通过 ContinueWith),使用 TaskContinuationOptions.RunSynchronously,如果方法在 中执行ContinueWith 如下: static async Task SimpleMethodContinuationAsync(Task antecedentTask, object state){//一
..
我正在使用 .NET 的 HostBuilder 编写后台服务.我有一个名为 MyService 的类,它实现了 BackgroundService ExecuteAsync 方法,我在那里遇到了一些奇怪的行为.在方法内部我await某个任务,在await之后抛出的任何异常都被吞了,但是在await终止之前抛出的异常过程. 我在各种论坛(堆栈溢出、msdn、medium)上在线查看,但找不到
..
Azure 存储客户端最近更新到 2.0 版,我还没有找到任何返回 Task 的 API. 如何将 TPL 与表存储一起使用?.. Blob 还是队列? 供您参考,新 API 有一个 此处为表存储示例. 解决方案 查看 https://github.com/WindowsAzure/azure-sdk-for-net/ 看来他们还没有机会添加任务版本(看起来很奇怪,因为它特别提
..
按照这个,任何人都可以针对以下任务发布准系统解决方案,针对 .NET 4.5(以及更大规模的 WPF UI)? 基本上,我正在寻找在 .NET 4.5 和 c# 上实现的任何 Torrent 应用程序的功能模拟. 任务: 我有IEnumerable,包含1000个IProcessable的实例,IProcessable有Process(int argument) 方法,执行需要
..
我有一个类似于下面代码的函数.它的目的是从一组点中一次取出一个三角形面,其中每三个点是一个面,然后细分它们,用边长不超过 nodeSize 的较小面的列表替换该面. 自然,此功能对于任何逼真的小平面网格来说都是耗时的.我想重构它以使用一些粗略的并行化.但是,Parallel.For 似乎没有办法在保留索引号的同时每隔一段时间遍历数组中的索引. 记住循环内的 SplitTriangle
..
我经常使用 XML 文档来记录我的类、方法和属性,但请查看 Microsoft 的此方法: 用法?这是什么魔法?如何模仿这种魔法? 源代码中没有这样的东西,我检查了(.Net 4.5).它也没有 xmldoc 标记,它不应该存在,但它显示在工具提示中. 我不久前注意到了它,但没有时间进行调查,所以现在我有,而且我浪费了至少一个小时试图徒劳地弄清楚. 这是一件好事,因为它显示
..
上个月我问了以下问题,这导致我学习了TaskEx.Yield: 异步方法在第一个之前可以有昂贵的代码吗“等待"? 然而,我后来意识到这个方法实际上将所有后续代码提交给环境TaskScheduler.本着真正的 DI 精神,我们的团队已同意尽可能避免使用环境实例,所以我想知道是否可以明确指定要使用的 TaskScheduler? 像下面这样的东西会很棒: public stati
..
这个问题是在跟进 为什么是此代码同步运行? .我意识到我真正的问题比那篇文章中的问题要高.我现在在下面问的问题是“我如何完成这项工作?" 我想在 C# 中使用并发来在后台计算事物.我有 ptsTin 类,它代表一个现有的地面.我想让加载尽可能快.有些工作是必不可少的,因为在工作完成之前您没有实例.例如,在 .LoadPoints() 和 .LoadTriangles 都完成之前,没有 pts
..
我想在异步任务成功完成时运行一些代码. 通过阅读网络上的文档和示例,我认为我可以使用 Task.ContinueWith 并指定 TaskContinuationOptions.OnlyOnRanToCompletion. 然而,这并不像我预期的那样. 以下代码是在 Visual Studio 2012, .Net 4.5 中创建的控制台程序: 使用系统;使用 System.T
..
返回已完成的任务对象? 可以编写 Task.Delay(0),或Task.FromResult(true) 随便. 但最有效的方法是什么? 解决方案 Task.FromResult 将是最直接的.它还包括一些常见整数等的内置结果. 但是,如果您的值不是“明显"值(并且不会有内置处理)但很可能在您的场景中经常返回 - 那么您可以创建自己的在一个字段中缓存结果(如果合适,可能是静态
..
我正在使用 System.Net.Http 来使用网络资源.在单线程上运行时,它可以完美运行.当我通过 TPL 运行代码时,它会挂起并且永远不会完成,直到超时. 结果是所有线程最终都在 sendTask.Result 行上等待.我不确定他们在等什么,但我认为它是 HttpClient 中的东西. 网络代码为: using (var request = new HttpRequestM
..
我遇到了一个很奇怪的情况,在 IIS 中 await 之后任务没有继续执行(不确定是否与 IIS 相关).我使用 Azure 存储和以下控制器重现了这个问题(github 上的完整解决方案): 公共类 HomeController : 控制器{私有静态 int _count;公共 ActionResult 索引(){运行请求();//我不想等待这个任务返回视图(_count);}公共异步任务 R
..
使用 TPL/Parallel.ForEach 是一种开箱即用的方法来限制每单位时间调用方法的次数(即每秒不超过 50 次调用).这与限制线程数不同.也许有一些简单的技巧可以使这项工作发挥作用? 解决方案 一种解决方案是制作以下 的线程安全版本https://stackoverflow.com/a/7728872/356790 ///////此类限制了在给定时间单位内可以发生的请求(方法
..
我相信有人知道这一点,我将非常感谢您的回答.我对委托和异步等不太了解 - 所以请给我一个如何实现的一般示例. 我有一个工作流程,其中我可以使用 Parallel.Foreach 同时为许多不同的文件执行一个方法(甜蜜的,磨碎那个处理器) -但是在该方法结束后,我需要运行另一种方法(它会生成关于前一个过程的报告),并且这第二种方法不能并行运行. 我不想在生成报告之前等待 Parallel
..
我需要取消一个返回 Task 的 API 调用,但它没有将 CancellationToken 作为参数,而且我无法添加. 我如何取消该任务? 在这种特殊情况下,我将 Xamarin.Forms 与 Geocoder 对象一起使用. IEnumerable位置 = 等待 geo.GetPositionsForAddressAsync(address); 该电话有时可能需要很长时间
..
我正在编写一些代码来处理大量数据,我认为让 Parallel.ForEach 为它创建的每个线程创建一个文件会很有用,这样输出就不需要同步(至少对我来说)). 看起来像这样: Parallel.ForEach(vals,新的 ParallelOptions { MaxDegreeOfParallelism = 8 },()=>GetWriter(),//返回一个新的 BinaryWrite
..
我是 C# 的新手,今天开始玩 TPL.我决定写一个修改过的版本Task Task.WhenAll 作为练习.我希望它具有以下行为: 找到第一个出错或被取消的任务后,取消其余任务,而不是等待它们完成. 如果任务出错,返回的任务应该设置正确的异常(即没有吞咽并用 OperationCancelledException() 替换) 方法签名中没有异步(希望避免冒泡). 我想出了以下疯狂
..