我正在使用后台工作人员在持续数小时的循环中处理大文件。在 GUI 中,我用标签和进度条控件显示当前进度的文件。大部分时间一切都很好。
我的问题是;有时,(可能是一些锁定或损坏的文件,尽管我在尝试捕获中处理了所有内容),几个小时后,当前文件名和进度条值在 GUI 上不会改变(例如在第 10000 个文件),尽管 GUI仍然对我有反应...也就是说,这不是 GUI 冻结问题。但它也没有说后台工作人员完成了(我正确处理了报告进度和完成事件)。不幸的是,它保持在那个状态,所以我杀死并重新启动程序,但它再次卡在同一个文件中。
所以; 我想了解代码在哪里(在哪个方法或行)卡住了......尝试 catch 块并没有给我任何线索..
为了实现这一点,我打算在 GUI 上放置一个按钮,当它卡在某个文件上时,我将按下该按钮,它会给我一个 DEBUG 信息,包含当前正在执行(即卡住)的方法名称和行号如果可能的话...
StackTrace 等不是解决方案,因为当我使用它时,它会给我我写它的方法的痕迹......
任何想法?
(诸如继续下一行代码之类的解决方案对我来说也足够了,我不想重新启动我的程序并再次浪费这么多时间)