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

时间:2013-06-28 10:12:47

标签: c# asp.net asp.net-mvc-4 clr c#-5.0

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

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

我调用的方法是LocalReport.Render,此Google search显示了许多人在此方法似乎永远不会返回的问题。

2 个答案:

答案 0 :(得分:2)

也许尝试在不同的线程上调用该方法?并在超时后中止线程?

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

答案 1 :(得分:0)

查看similar question的答案后,我认为最差的解决方案是将违规调用(发送到LocalReport.Render)包装到单独的进程和应用程序域中。如果它开始表现不正常,我将终止该过程。