0

我正在使用后台工作人员在持续数小时的循环中处理大文件。在 GUI 中,我用标签和进度条控件显示当前进度的文件。大部分时间一切都很好。

我的问题是;有时,(可能是一些锁定或损坏的文件,尽管我在尝试捕获中处理了所有内容),几个小时后,当前文件名和进度条值在 GUI 上不会改变(例如在第 10000 个文件),尽管 GUI仍然对我有反应...也就是说,这不是 GUI 冻结问题。但它也没有说后台工作人员完成了(我正确处理了报告进度和完成事件)。不幸的是,它保持在那个状态,所以我杀死并重新启动程序,但它再次卡在同一个文件中。

所以; 我想了解代码在哪里(在哪个方法或行)卡住了......尝试 catch 块并没有给我任何线索..

为了实现这一点,我打算在 GUI 上放置一个按钮,当它卡在某个文件上时,我将按下该按钮,它会给我一个 DEBUG 信息,包含当前正在执行(即卡住)的方法名称和行号如果可能的话...

StackTrace 等不是解决方案,因为当我使用它时,它会给我我写它的方法的痕迹......

任何想法?

(诸如继续下一行代码之类的解决方案对我来说也足够了,我不想重新启动我的程序并再次浪费这么多时间)

4

1 回答 1

0

您可以尝试 Microsoft CLR 团队开发的新组件:ClrMD: .NET Crash Dump and Live Process Inspection

ClrMD 是一组高级 API,用于以与 SOS 调试扩展 (SOS) 相同的方式以编程方式检查 .NET 程序的故障转储。它允许您为您的应用程序编写自动崩溃分析并自动执行许多常见的调试器任务。

于 2013-05-04T08:31:22.860 回答