有没有办法检测TPL数据流图中的中断

时间:2015-06-26 11:16:36

标签: c# tpl-dataflow

我创建了相当复杂的TPL数据流图,并且经常会出现图中某处出现中断的情况。这种情况的症状只是应用程序挂起,因为某些数据流块正在等待消息。

除了手动跟踪图表之外,有没有办法检测何时发生这种情况?我可以看到在DataflowBlock的调试视图中有一个LinkedTargets属性 - 当我有一个中断时,它被设置为0.但是因为这不是公共的所以我不能写一些东西来自动检查这个。

1 个答案:

答案 0 :(得分:2)

您可以使用反射。 TPL Dataflow Debugger Visualizer使用反射来检索DataFlowBlockDebugInfoRetriever.GetInnerDataFlowDebuggerInfo中的链接目标,并为每个块创建nodes列表。然后它创建一个图结构using QuickGraph

此结构可以像Visualizer一样可视化,或者您可以在代码中搜索分区。已有implements several algorithms的Quickgraph可能有用。

更简单的解决方案是仅搜索具有0个链接目标的非ActionBlock块