如何在Visual Studio中调试线程池?

5
我对多线程环境还很陌生,我正在调试一个应用程序,该程序使用System.Timers.timer类中的elapsed事件创建了一个线程池,但我遇到了问题。我已经在一个方法内设置了断点,每次该方法被elapsed事件调用时都会触发,但由于其他线程的操作,Visual Studio跳转代码行之间。
如何在特定线程上从头到尾调试一个方法,而不让Visual Studio提醒我其他线程? Visual Studio能否停止所有线程,并让我从所选线程进行调试?
2个回答


1

在调试时,可以暂停其他线程,只让你关心的线程运行。

  • 在Visual Studio中打开“Threads”窗口(Debug -> Windows -> Threads)
  • 右键单击您不想运行的任何线程,然后选择“Freeze”
  • 继续调试。

完成调试特定线程后,请不要忘记取消冻结该线程。


仍然很难进行调试,因为事件不断生成新线程,我必须在它们到来时冻结。然而,我意识到我的当前实现是错误的,因为如果计算时间长于定时器的设置间隔,则多个线程可以访问相同的方法(相同的成员)。我现在使用“锁定”,这样可以节省很多调试压力。 - steeppham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接