如何优雅地处理调用可能永远不会返回的方法

本文关键字:返回 方法 永远 何优雅 处理 调用 | 更新日期: 2023-09-27 18:20:19

在我的C#MVC4 ASP.NET代码中(在控制器上的方法中),我调用了一个我知道可能永远不会返回的函数。它是对一个Microsoft对象的调用,该对象不会引发和出错,不会超时,只是挂起(以及挂起和挂起)。

我想我已经找到了发生这种情况的具体事件的原因,但一般问题让我担心,我想防范它(因为它会导致服务器上的一般问题,而不仅仅是单个用户的孤立问题)。我想知道处理这类问题最优雅的方法。

我调用的方法是LocalReport.RRender,这个谷歌搜索显示了许多人有很多问题,而这个方法似乎永远不会返回。

如何优雅地处理调用可能永远不会返回的方法

也许可以尝试在另一个线程上调用该方法?并在超时后中止线程?

虽然根本不是一个整洁的解决方案,但没有太多可用的选项,以防对方法挂起的原因没有误解。

看过类似问题的答案后,我认为最不糟糕的解决方案是将有问题的调用(对LocalReport.RRender)封装到一个单独的Process和应用程序域中。如果这个过程开始表现不稳定,我就会终止它。