我的C#应用程序处于循环中,如何在代码中找到位置?

我的C#应用程序处于循环中,如何在代码中找到位置?,c#,visual-studio,loops,debugging,C#,Visual Studio,Loops,Debugging,我已经编写了一个相当大的应用程序,在后台运行,执行dome任务并处理一些数据 现在的问题是,应用程序在一段时间内运行良好。但当我一天后检查时,例如,我的应用程序的Backgroundworker似乎在循环或卡住。没有错误消息,应用程序的UI仍在正常运行。它只是停止处理数据 专门针对这个案例,我为自己添加了一个简单的网站,Backgroundworker在其中报告当前日期时间。因此,当网站上的日期时间有点最新时,我知道它运行良好。但当它成为过去时,我知道我的应用程序被卡住了 问题发生在未定义的时间

我已经编写了一个相当大的应用程序,在后台运行,执行dome任务并处理一些数据

现在的问题是,应用程序在一段时间内运行良好。但当我一天后检查时,例如,我的应用程序的Backgroundworker似乎在循环或卡住。没有错误消息,应用程序的UI仍在正常运行。它只是停止处理数据

专门针对这个案例,我为自己添加了一个简单的网站,Backgroundworker在其中报告当前日期时间。因此,当网站上的日期时间有点最新时,我知道它运行良好。但当它成为过去时,我知道我的应用程序被卡住了

问题发生在未定义的时间之后。可以是10分钟或90小时

现在进行调试:在VisualStudio中是否有一种方法可以查看应用程序当前所在的位置?这将使调试更加容易。否则我将不得不在试错基础上设置断点

致以最良好的祝愿

朱利安你有两个选择:

1.-按照建议附加调试器并检查代码,但如果应用程序长时间运行正常,这不是最好的主意

2.-日志文件。创建日志文件以跟踪应用程序

我要做的是:我会将这两种选择结合起来。添加日志文件以检查结果,并在应用程序到达某些点时(由您决定),然后,在我大致了解问题所在后,使用调试器

祝你好运

编辑:


我完全同意这个答案,但我想补充一点,让后台工作人员在进入和离开特定部分时将关键位置信息传递回UI,这样您就可以在附加时简单地询问。由于问题可能需要几个小时才能显现出来,因此最终可能会有大量日志文件需要处理,除非您使用具有有限条目的滚动日志,连续设置一个信号装置至少可以让您知道此时断点的大致位置。

连接调试器并点击暂停按钮。我没有找到backgroundworker。然后我进入当前行:Application.Run(newform1());使用日志框架注册应用程序在循环中执行的步骤。在日志文件中转储有关该循环内使用的关键变量值以及管理循环内的生命周期和关键点的信息。让你的应用程序运行,并在所需时间后检查日志文件内容。如果它是多线程的,请检查“调试”>“线程”窗口,然后双击后台工作线程并查看其位置。