如何在执行代码的同时查看活动的.Net事件?

时间:2018-08-30 16:02:26

标签: vb.net visual-studio-2015

如何在单步执行代码时跟踪哪些事件当前处于“活动”状态或正在处理中。

问题

当我在一个相当大的应用程序中调试代码(逐步执行)时,突然间我发现正在运行的代码正在通过功能中的代码运行,而这些功能与我正在排除故障的代码无关。我花了很多时间弄清楚为什么我发现自己在我调试的代码之外的功能中逐步执行代码。

结果是,在应用程序启动时,将处理程序添加到某些控件以及计时器控件中。计时器控件每5分钟左右触发一次事件。当采取某些措施时,还会触发其他事件,但是我不知道是什么原因导致调试器进入某些功能,原因是没有迹象或“提示”告诉我事件已触发,因此这就是为什么我现在正在进入其他功能。

当我以上述方式触发事件时,我如何知道发生了什么?

注意

这不是有关如何在代码中添加处理程序或删除处理程序的问题。

1 个答案:

答案 0 :(得分:1)

因此,基本上,计时器仍在与主逻辑相同的线程中运行。每次功能/事件完成并且窗口进入等待部分,在该部分中读取unser输入并启动事件,计时器将触发。在其他事件繁忙时,它们将不会运行。如果使用后台工作程序或启动第二个线程。它们将在您当前的步骤之间运行,而Visual Studio将从一个跳到另一个。有一个线程窗口可以跟踪所有活动线程,但这仅是一个线索。有时从一个功能跳到另一个功能仍然很烦人。我的建议是在那些困扰您的函数上使用debugger-hidden属性。

如何找到“线程”窗口:

How can I view Threads window in Visual studio?

如何使用隐藏的调试器:

https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debuggerhiddenattribute?redirectedfrom=MSDN&view=netframework-4.7.2

https://social.msdn.microsoft.com/Forums/vstudio/en-US/cf20736c-cbfb-4919-b495-ea9a9235f9e5/debuggerhiddenattribute-example?forum=csharpgeneral