task-parallel-library 相关问题

自.NET 4以来,任务并行库是.NET Framework的一部分。它是一组API,使开发人员能够对异步应用程序进行编程。

如何使用Task.ContinueWith,避免关闭控制台窗口?

我在尝试测试 TPL 时遇到了一个简单的问题。我想在控制台窗口中获取数字(从 1 到 1000)。 这是我的代码: 班级计划 { 静态虚空...

回答 2 投票 0

如何使用Task.ContinueWith,避免关闭控制台窗口?

我在尝试测试 TPL 时遇到了一个简单的问题。我想在控制台窗口中获取数字(从 1 到 1000)。 这是我的代码: 班级计划 { 静态虚空...

回答 2 投票 0

如何正确使用Task.ContinueWith?

我在尝试测试 TPL 时遇到了一个简单的问题。我想在控制台窗口中获取数字(从 1 到 1000)。 这是我的代码: 班级计划 { 静态v...

回答 2 投票 0

IEnumerable 的意外行为

在下面的代码中,我正在映射通过从 AzureDevOps Rest Api 并行下载对象而获得的数据。当将mapDictionary转换为e时,我注意到代码中存在一些奇怪的瓶颈...

回答 1 投票 0

使用异步而不等待?

考虑使用异步而不等待。 认为您可能误解了 async 的作用。警告是 完全正确:如果您将方法标记为异步但不使用等待 任何地方,那么你的方法...

回答 5 投票 0

调用 Parallel.For() 时避免闭包

我正在执行一些元素 UI 命中测试,如下所示: 内部 MyElement[] HitTest((double x, double y) 点,双刻度) { ConcurrentBag geoms = 新 ConcurrentBag 我正在执行一些元素 UI 命中测试,如下所示: internal MyElement[] HitTest((double x, double y) point, double scale) { ConcurrentBag<MyElement> geoms = new ConcurrentBag<MyElement>(); var point = new Point { X = point.x, Y = point.y }; Parallel.For(0,UIElements.Length, (d) => { var element = UIElements[d]; if (element is IHitTestable ht && ht.HitTest(ref point,scale) geoms.Add(element); }); return geoms.ToArray(); } 我想重构它以删除局部变量周围的闭包;我还相信循环的每次迭代可能会为每次迭代分配匿名内容(类、方法)。 问题是 Parallel.For() 参数期望 Action<int> 作为委托并行运行,而我需要一个委托 Action<int,Point,double> 来处理局部变量,以便我可以使用预期参数编写编译时方法类型。 如何在不匿名的情况下向 Parallel.For() 提供合适的代表? 我相信这个问题可能是令人尴尬的并行,但如果存在堆竞争,则不会。 我相信循环的每次迭代可能会为每次迭代分配匿名内容(类、方法)。 调用 Parallel.For 时,只会创建一个委托对象。这将捕获任何局部变量,但调用委托不会导致任何进一步的分配。因此,此开销应该是固定的,如果需要并行循环,则开销可能微不足道。 如何在不匿名的情况下向 Parallel.For() 提供适当的委托 有很多选项,您可以创建本地方法,但其主要优点是为方法提供真实名称以提高可读性。您可以创建一个成员方法,但这需要您将参数作为成员存储在类中,这可能不是一个好主意。您还可以创建自定义类的对象,并传递该对象的成员方法,但这相当于编译器为您所做的事情。 我相信这个问题可能是令人尴尬的并行,但如果存在堆竞争则不会。 在做出任何假设之前对代码进行分析和基准测试。如果有“很少”(比如数百个)项目,则常规循环可能是最好的,因为它避免了并行循环的任何同步开销。如果有很多项目(比如数百万个),您可能需要重新考虑您的方法,因为 UI 框架在处理这么多对象时往往会遇到问题。

回答 1 投票 0

在 C# 中实现并行执行的选项

我有一个用例,我需要处理n个操作,其中涉及其他I/O操作。 方法 1:使用 ConcurrentBag。 但担心ProcessSome中的I/O操作...

回答 1 投票 0

在任务内等待异步/等待

我的 main() 中有这个构造,它创建了 var 任务 = new List(); var t = Task.Factory.StartNew( 异步()=> { Foo.Fim(); 等待 Foo.DoBar(); })...

回答 3 投票 0

冷任务和TaskExtensions.Unwrap

我有一个缓存类,它使用冷(未启动)任务来避免多次运行昂贵的东西。 公共类 AsyncConcurrentDictionary :System.Collections.Concu...

回答 2 投票 0

并行任务 - 运行并行线程,但不等待其他任务完成并从数据库获取最新数据

我正在使用任务库并行运行多个任务,并且我使用下面的代码来等待其他任务完成。 Parallel.ForEach(DatafromDB, item => { 下载SSR(中介,源...

回答 1 投票 0

如何在 C# 中并行运行线程,精确到毫秒时间 [已关闭]

我想使用 C# 并行运行线程来执行某些任务。我已附上我正在尝试的照片,但线程仍然在不同时间以毫秒级别运行,是否可以...

回答 2 投票 0

如何在c#中并行运行线程,精确到毫秒时间

我想使用 C# 并行运行线程来执行某些任务。我已附上我正在尝试的照片,但线程仍然在不同时间以毫秒级别运行是否可以运行

回答 1 投票 0

带重试的并行 Foreach

我实现了一个示例应用程序来查看 Parallel.ForEach 循环内重试的行为。根据我的观察,以下应用程序未显示数组内的所有值,在

回答 3 投票 0

列表<T>线程安全

我正在使用以下代码 var 已处理 = new List(); Parallel.ForEach(项目, 项目 => { 已处理。添加(SomeProcessingFunc(项目)); }); 上面的代码线程安全吗?有没有...

回答 7 投票 0

在报告异步等待代码与进度条控件的进度时使用 IProgress

私有静态异步任务FuncAsync(DataTable dt,DataRow dr) { 尝试 { 等待任务.延迟(3000); //假设这是一个异步http post请求,需要3秒才能响应 瑟...

回答 2 投票 0

Axum 与 TPL、异步

Axum 是一种基于 C# 3.0 子集和超集的自己的语言,TPL 是添加到 .Net 4.0 的扩展。我的问题是,Axum 与 TPL 在性能、实施和方面相比如何

回答 1 投票 0

Parallel Foreach 未返回预期结果

我实现了一个示例应用程序来查看 Parallel.ForEach 循环内重试的行为。根据我的观察,以下应用程序未显示数组内的所有值,在

回答 1 投票 0

使用 TPL 数据流块处理异常

我有一个简单的 tpl 数据流,它基本上执行一些任务。 我注意到,当任何数据块中出现异常时,它不会被初始父块调用者捕获。 我有广告...

回答 3 投票 0

并行运行时如何获取HttpClient响应时间

在我的 ASP.NET MVC4 应用程序中,我有一个控制器操作,在该操作中我访问多个外部网站并收集以聚合方式显示在页面上的信息。显然,我想...

回答 2 投票 0

估计任务执行持续时间的最佳拟合公式

我正在尝试为我新创建的同时并行运行的任务找出最佳估计计算。 作为计算的第一步,我的公式为 Duration(D) = Count(c)/

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.