Asp.Net中是否可以与运行Parallel.Foreach的后台线程进行通信

问题描述 投票:0回答:1

场景

  1. 服务器必须处理一组报告,每个报告包含n个雇员数
  2. UI接收大量输入并触发调用以处理报告
  3. 使用HostingEnvironment.QueueBackgroundWorkItem将服务器上的进程调用排队到后台线程中>
  4. 在此后台线程中运行的函数使用Parallel.ForEach并行化报表处理逻辑
  5. UI基本上显示了一个简单的网格,其中包含报告列表,每个报告都有一个status
  6. ,它正在通过SignalR从服务器接收更新

    这里的挑战是我们需要能够从用户界面中取消每个报告。但是报表处理逻辑在Parallel.ForEach内部。我确实看到了有关CancellationToken的文档,但这会破坏整个循环。我正在寻找的是一种与在Parallel.ForEach中运行的每个任务进行通信的方式,并指示当UI发出取消请求时是否必须取消该任务。

甚至有可能吗?或是否有其他方法?

场景服务器必须处理一组报告,每个报告包含n个雇员。UI接收一堆输入并触发调用以处理报告。服务器上的处理调用已排队...

c# asp.net-mvc multithreading task-parallel-library
1个回答
0
投票
Take a look at the documentation here关于在并行循环中处理异常。实际上,您可以构建它,以便可以在循环迭代中捕获抛出的异常,并且可以控制何时捕获哪个异常。
© www.soinside.com 2019 - 2024. All rights reserved.