- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ActionBlock
,它只处理来自无限循环的连续不断的消息。在 ActionBlock
中,我发布了一个 http 帖子。当出现任何与网络相关的错误时,该方法会抛出异常并且该 block 出现故障/停止。这不是我想要的行为。即使发生异常,我也希望处理运行。 (继续点击 Process
方法)模拟我的程序;
private static ExecutionDataflowBlockOptions processBlockOptions
{
get
{
return new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = 1
};
}
}
static async Start()
{
processQueue = new
ActionBlock<QueueMessage>(
async (item) =>
{
await Process(item);
},
processBlockOptions);
while (!Stopped)
{
//Read from DB and do logic with item
QueueMessage item= new QueueMessage();
await processQueue.SendAsync(item);
}
}
private async static Task<int> Process(QueueMessage item)
{
try
{
await item.HttpPost(order);
}
catch (Exception ex)
{
//Http endpoint might be broken
throw ex;
}
}
最佳答案
您正在重新抛出异常,但您做错了:
throw ex;
如果您需要记录错误或暂时停止管道,您不需要抛出任何东西,只需记录 ex.ToString()
并做出相应的 react 。第二件事是你应该使用 throw;
而不是 throw ex;
,因为你正在为异常重写堆栈跟踪,这在这种情况下并不重要但是在更复杂的工作流程的情况下可能会产生误导。
关于c# - 如何让 ActionBlock 在发生任何异常时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184684/
我目前正在使用 ActionBlock 来处理串行启动的异步作业。它可以很好地处理每个发布到它的项目,但无法从每个作业中收集结果列表。 我可以使用什么以线程安全的方式收集我的作业结果? 我的代码目前是
我目前正在使用 ActionBlock 来处理串行启动的异步作业。它可以很好地处理每个发布到它的项目,但无法从每个作业中收集结果列表。 我可以使用什么以线程安全的方式收集我的作业结果? 我的代码目前是
我有一个 ActionBlock,它只处理来自无限循环的连续不断的消息。在 ActionBlock 中,我发布了一个 http 帖子。当出现任何与网络相关的错误时,该方法会抛出异常并且该 block
我认为在测试方法中,“results”集合变量的类型必须是 BlockingCollection而不是 List .如果我错了,请证明给我看。我从 https://blog.stephencleary
我们在发送到 ActionBlock 时看到了意外行为,其中似乎正在发生并行处理,即使 MaxDegreeOfParallelism 为 1。情况如下。 发布到 ActionBlock 的类如下所示:
我需要并行处理某些项目,所以我使用 TPL Dataflow。 .要注意的是,共享相同键(类似于字典)的项目应按 FIFO 顺序处理,而不是彼此平行(它们可以与具有不同值的其他项目平行)。 正在完成的
我想实现优先级 ActionBlock .这样我就可以有条件地优先考虑一些TInput使用 Predicate 的项目. 我读了 Parallel Extensions Extras Samples和
我不确定这是否可行,但如果可行,我可能做得不对。假设我有一个链接到许多消费者(ActionBlocks)的共享缓冲区。每个消费者都应该消费满足用于将其链接到缓冲区的谓词的数据。例如,ActionBlo
我有一个带有 ActionBlock 的 Receiver 类: public class Receiver : IReceiver { private ActionBlock _receiver
我一直在尝试通过创建示例应用程序来理解 TPL 数据流。我一直在尝试做的一件事是从 ActionBlock 更新 TextBox 控件。使用 TPL Dataflow 的原因是在保持顺序的同时执行并行
我正在 .Net TPL 中构建一个管道,该管道经过一系列数据转换步骤,最终需要将输出写入文件。我正在考虑使用 ActionBlock 写入文件。但是,我不确定这是否会遇到任何问题......例如多个
我对 Framework 4.0 的 ActionBlock 实现很感兴趣,因为 Framework 4.0 似乎不支持 TPL.Dataflow。更具体地说,我对接收 Func 委托(delegat
我想知道并行执行多个异步方法的推荐方法是什么? 在 System.Threading.Tasks.Dataflow 中,我们可以指定最大并行度,但无界可能也是 Task.WhenAll 的默认设置?
我正在使用 TPL DataFlow 和 ActionBlock 来创建并行性。使用 TPL DataFlow 的原因是因为它支持异步性,除了我无法让它工作。 var ab = new ActionB
刚从 System.Threading.Tasks.Dataflow 开始,不确定我是否理解 ActionBlock 中未处理异常的正确错误处理技术。 我现在所拥有的导致挂起:- ActionBloc
我有这个代码: var data = new BufferBlock(new DataflowBlockOptions { BoundedCapacity = 1 }); var action = n
我是一名优秀的程序员,十分优秀!