异常需要4分钟才能完成

时间:2011-04-13 14:33:39

标签: c# exception

我有一个奇怪的问题:我有一些代码被try .. catch

包围

在捕获部分,我正在截取发生的事情。

问题是在错误情况之后抛出异常需要几分钟,所以我完全得到了其他内容的截图。

什么原因导致异常需要几分钟才能被抛出?

由于

已添加代码:

WaitAndActivateWindow调用AutoIT来关注违规窗口(在整个代码中调用的方法,加载时间约为0.2秒。

try
{
    // Load AutoIt defaults.
    LoadDefaults();

    // HandleInstallation();

    // Some more actions here
}
catch (Exception e)
{
    this.WaitAndActivateWindow();
    ScreenShotUtility.TakeScreenShot(@"UnhandledError");

    Log(e.ToString());

    throw;
}

2 个答案:

答案 0 :(得分:3)

该例外不太可能需要4分钟才能被抛出。在我看来,更有可能的是,在捕获异常之前,作为堆栈释放的其他内容会导致延迟。

我怀疑:

  • 打开与外部系统(数据库,网络等)的连接
  • 任何正在释放被摧毁的对象集合的东西。那些对象是否具有复杂的IDisposable逻辑,例如?

使用调试器运行代码并使用一些明智的断点应该可以快速缩小问题范围。 @forsvarir关于在你抛出并捕获异常时捕获时间戳的建议也会帮助你。

答案 1 :(得分:0)

当异常需要花费很长时间时,对我来说最常见的情况是操作系统(在我的Mac OS X中)将核心转储写入文件(我已将Mac配置为执行此操作)。这是一个值得关注的地方,但我确信还有很多其他的可能性。 (问题中的更多信息可能会有所帮助。)