task-parallel-library相关内容

我可以在 .Net 3.5 项目中使用任务并行库吗?

听说Task Parallel Library 可以在.Net 3.5 项目中使用.这是正确的,如果是,我该如何使用它?在 .Net 4.0 中,它驻留在 System.Threading 中,但是当我在 Visual Studio 2010 中选择 .Net 3.5 作为目标时,我无法访问 Parallel 和 Parallel 循环等类. 解决方案 (旧答案 - 3.5 的向后移植似乎 ..
发布时间:2021-11-26 09:57:01 C#/.NET

处理取消令牌源的正确模式

考虑这样一个场景,您需要完成一些异步工作,并且可以在即发即弃模式下运行它.这种异步工作能够侦听取消,因此您向它传递取消令牌以便能够取消它. 在给定的时刻,我们可以决定请求取消正在进行的活动,方法是使用我们从中获取取消令牌的取消令牌源对象. 因为取消令牌源实现了IDisposable,所以只要我们完成它,我们就应该调用它的Dispose方法.这个问题的重点是确定何时您完成了给定的取消令牌 ..

如何并行执行任务但每T秒不超过N个任务?

我需要尽可能快地并行运行许多任务.但是如果我的程序每 1 秒运行超过 30 个任务,它就会被阻塞.如何确保每 1 秒间隔运行的任务不超过 30 个? 换句话说,如果在最后 1 秒的时间间隔内完成了 30 个任务,我们必须阻止新任务启动. 我丑陋的可能解决方案: private async Task Process(List taskList, int maxIntervalCount ..
发布时间:2021-11-24 15:44:46 C#/.NET

任务抛出的异常被吞下,如果在“等待"之后抛出

我正在使用 .NET 的 HostBuilder 编写后台服务.我有一个名为 MyService 的类,它实现了 BackgroundService ExecuteAsync 方法,我在那里遇到了一些奇怪的行为.在方法内部我await某个任务,在await之后抛出的任何异常都被吞了,但是在await终止之前抛出的异常过程. 我在各种论坛(堆栈溢出、msdn、medium)上在线查看,但找不到 ..

如何将 TPL 与 Azure StorageClient 2.0 及更高版本中的新 API 一起使用?

Azure 存储客户端最近更新到 2.0 版,我还没有找到任何返回 Task 的 API. 如何将 TPL 与表存储一起使用?.. Blob 还是队列? 供您参考,新 API 有一个 此处为表存储示例. 解决方案 查看 https://github.com/WindowsAzure/azure-sdk-for-net/ 看来他们还没有机会添加任务版本(看起来很奇怪,因为它特别提 ..

基于任务的处理,使用 .NET 4.5 和 C# 限制并发任务数

按照这个,任何人都可以针对以下任务发布准系统解决方案,针对 .NET 4.5(以及更大规模的 WPF UI)? 基本上,我正在寻找在 .NET 4.5 和 c# 上实现的任何 Torrent 应用程序的功能模拟. 任务: 我有IEnumerable,包含1000个IProcessable的实例,IProcessable有Process(int argument) 方法,执行需要 ..
发布时间:2021-11-24 10:40:49 C#/.NET

在 .net 4.5 中步进并行化 for 循环

我有一个类似于下面代码的函数.它的目的是从一组点中一次取出一个三角形面,其中每三个点是一个面,然后细分它们,用边长不超过 nodeSize 的较小面的列表替换该面. 自然,此功能对于任何逼真的小平面网格来说都是耗时的.我想重构它以使用一些粗略的并行化.但是,Parallel.For 似乎没有办法在保留索引号的同时每隔一段时间遍历数组中的索引. 记住循环内的 SplitTriangle ..
发布时间:2021-11-24 10:29:25 C#/.NET

神秘的“用法"Visual Studio 文档 XML 注释标签中的标签

我经常使用 XML 文档来记录我的类、方法和属性,但请查看 Microsoft 的此方法: 用法?这是什么魔法?如何模仿这种魔法? 源代码中没有这样的东西,我检查了(.Net 4.5).它也没有 xmldoc 标记,它不应该存在,但它显示在工具提示中. 我不久前注意到了它,但没有时间进行调查,所以现在我有,而且我浪费了至少一个小时试图徒劳地弄清楚. 这是一件好事,因为它显示 ..

TaskEx.Yield(TaskScheduler)

上个月我问了以下问题,这导致我学习了TaskEx.Yield: 异步方法在第一个之前可以有昂贵的代码吗“等待"? 然而,我后来意识到这个方法实际上将所有后续代码提交给环境TaskScheduler.本着真正的 DI 精神,我们的团队已同意尽可能避免使用环境实例,所以我想知道是否可以明确指定要使用的 TaskScheduler? 像下面这样的东西会很棒: public stati ..
发布时间:2021-11-24 10:26:29 C#/.NET

如何在后台运行非必要的计算?

这个问题是在跟进 为什么是此代码同步运行? .我意识到我真正的问题比那篇文章中的问题要高.我现在在下面问的问题是“我如何完成这项工作?" 我想在 C# 中使用并发来在后台计算事物.我有 ptsTin 类,它代表一个现有的地面.我想让加载尽可能快.有些工作是必不可少的,因为在工作完成之前您没有实例.例如,在 .LoadPoints() 和 .LoadTriangles 都完成之前,没有 pts ..
发布时间:2021-11-24 10:25:26 C#/.NET

即使在指定 TaskContinuationOptions 时,任务继续也始终运行

我想在异步任务成功完成时运行一些代码. 通过阅读网络上的文档和示例,我认为我可以使用 Task.ContinueWith 并指定 TaskContinuationOptions.OnlyOnRanToCompletion. 然而,这并不像我预期的那样. 以下代码是在 Visual Studio 2012, .Net 4.5 中创建的控制台程序: 使用系统;使用 System.T ..
发布时间:2021-11-24 10:23:08 C#/.NET

返回已完成任务的最佳方法是什么?

返回已完成的任务对象? 可以编写 Task.Delay(0),或Task.FromResult(true) 随便. 但最有效的方法是什么? 解决方案 Task.FromResult 将是最直接的.它还包括一些常见整数等的内置结果. 但是,如果您的值不是“明显"值(并且不会有内置处理)但很可能在您的场景中经常返回 - 那么您可以创建自己的在一个字段中缓存结果(如果合适,可能是静态 ..
发布时间:2021-11-24 10:14:42 C#/.NET

为什么此代码在通过 TPL/Tasks 执行时会失败?

我正在使用 System.Net.Http 来使用网络资源.在单线程上运行时,它可以完美运行.当我通过 TPL 运行代码时,它会挂起并且永远不会完成,直到超时. 结果是所有线程最终都在 sendTask.Result 行上等待.我不确定他们在等什么,但我认为它是 HttpClient 中的东西. 网络代码为: using (var request = new HttpRequestM ..
发布时间:2021-11-24 10:14:33 C#/.NET

等待后任务继续不起作用

我遇到了一个很奇怪的情况,在 IIS 中 await 之后任务没有继续执行(不确定是否与 IIS 相关).我使用 Azure 存储和以下控制器重现了这个问题(github 上的完整解决方案): 公共类 HomeController : 控制器{私有静态 int _count;公共 ActionResult 索引(){运行请求();//我不想等待这个任务返回视图(_count);}公共异步任务 R ..
发布时间:2021-11-24 10:14:21 C#/.NET

在并行调用中,限制每秒执行次数

使用 TPL/Parallel.ForEach 是一种开箱即用的方法来限制每单位时间调用方法的次数(即每秒不超过 50 次调用).这与限制线程数不同.也许有一些简单的技巧可以使这项工作发挥作用? 解决方案 一种解决方案是制作以下 的线程安全版本https://stackoverflow.com/a/7728872/356790 ///////此类限制了在给定时间单位内可以发生的请求(方法 ..

Howto:Parallel.Foreach 执行多个进程,在每个进程运行一个新进程之后(但一次一个)?

我相信有人知道这一点,我将非常感谢您的回答.我对委托和异步等不太了解 - 所以请给我一个如何实现的一般示例. 我有一个工作流程,其中我可以使用 Parallel.Foreach 同时为许多不同的文件执行一个方法(甜蜜的,磨碎那个处理器) -但是在该方法结束后,我需要运行另一种方法(它会生成关于前一个过程的报告),并且这第二种方法不能并行运行. 我不想在生成报告之前等待 Parallel ..
发布时间:2021-11-24 10:12:13 C#/.NET

是否可以在没有 CancellationToken 的情况下取消 C# 任务?

我需要取消一个返回 Task 的 API 调用,但它没有将 CancellationToken 作为参数,而且我无法添加. 我如何取消该任务? 在这种特殊情况下,我将 Xamarin.Forms 与 Geocoder 对象一起使用. IEnumerable位置 = 等待 geo.GetPositionsForAddressAsync(address); 该电话有时可能需要很长时间 ..
发布时间:2021-11-24 10:08:40 C#/.NET

编写一个 Task.WhenAll/WhenAny 变体,在第一个错误/取消的任务上取消所有其他任务

我是 C# 的新手,今天开始玩 TPL.我决定写一个修改过的版本Task Task.WhenAll 作为练习.我希望它具有以下行为: 找到第一个出错或被取消的任务后,取消其余任务,而不是等待它们完成. 如果任务出错,返回的任务应该设置正确的异常(即没有吞咽并用 OperationCancelledException() 替换) 方法签名中没有异步(希望避免冒泡). 我想出了以下疯狂 ..
发布时间:2021-11-24 10:02:11 C#/.NET