我正在使用后台工作程序来处理持续数小时的循环中的大文件。在GUI中,我显示当前进度文件,其中包含标签和进度条控件。一切都在大部分时间都可以。
我的问题是;有时,(可能是一些锁定或损坏的文件,虽然我在try catch中处理了everthing),几个小时后,当前文件名和进度条值在GUI上没有变化(例如在第10000个文件中),尽管GUI仍然对我有所回应......也就是说,它不是一个GUI冻结问题。但它也没有说后台工作者完成了(我正确地处理了reportprogress和已完成的事件)..不幸的是,它保持在那个状态,所以我杀了并重新启动程序,但它再次陷入同一个文件。
因此;我想了解代码被卡住的WHERE(在哪种方法或行中)...尝试catch块并没有给我任何线索..
为了达到这个目的,我打算在GUI上放一个按钮,当它卡在某个文件上时,我会按下那个按钮,它会给我一个DEBUG信息,包含当前正在执行的(粘贴的)方法名称和行号如果可能......
StackTrace等不是一个解决方案,因为当我使用它时,它给了我在...中编写它的方法的痕迹......
有什么想法吗?
(解决方案如,继续使用下一行代码也足以满足我的要求,我不想重新启动我的程序并再次失去这么多时间)
答案 0 :(得分:0)
您可以尝试Microsoft CLR团队开发的新组件:ClrMD:.NET Crash Dump and Live Process Inspection
ClrMD是一组用于以编程方式检查a的高级API 崩溃转储.NET程序的方式与SOS调试的方式相同 扩展(SOS)。它允许您编写自动崩溃分析 您的应用程序并自动执行许多常见的调试器任务。