2014-04-25 45 views
3

出于好奇。我想知道是否有可能在调试过程中进入(F11)后台工作。它通常只是跳到下一行代码。 VS设置是否需要更改?它只是它的意思?在调试期间,进入后台工作者/线程。可能?

任何澄清将不胜感激。谢谢。

+1

应该这样做没问题 - 只需在线程函数中放置一个断点并逐步完成。在断点处,所有线程都暂停。 [请参阅此处了解更多信息](http://msdn.microsoft.com/zh-cn/library/bb157786.aspx)。 –

+0

@RogerRowland是的,这就是我通常所做的。我只是想知道为什么它不会像正常功能那样进入内部。 – Dumisani

+1

调试/ Windows /线程给你一个正在运行的线程列表。双击一个例如而程序在断点处暂停并且您看到线程停止的位置。参看http://msdn.microsoft.com/en-us/library/w15yf86f.aspx。正如罗杰所说,从那里调试的行为非常正常。 –

回答

2

它通常只是跳到下一行代码。

这是因为BackgroundWorker正在另一个线程上执行,它必须先创建并启动,这需要一些时间。如果你继续踩下去,你会在某个时候进入工人,但是没有确切的时间。

如果要调试它,只需在工作代码的开始处放置一个断点即可。

+0

这是信息。谢谢:) – Dumisani

4

正如评论所说,你只需要为后台任务中的第一行代码设置一个断点。 (或者:Debugger.Break()。)

此外,我建议你看看Debug > Windows > Threads窗口,它在多线程调试的情况下非常有用。

+0

我也会推荐平行观察窗口。 –

1

调试开始后,打开Sebestyén回答中提到的线程窗口。当所需的线程开始时,请注意线程窗口中出现的新行的“位置”列。一旦它有你想要的线程的名称,右键单击它并选择“切换到线程”。 这解决了当我试图调试特定线程时,调试器光标继续前进到代码的其他线程(其他线程正在运行,我想)的问题。

2

Haggisatonal答案

禁用VS宿主进程(项目 - >属性 - >调试 - >启用在Visual Studio宿主进程)

链接

Visual Studio 2015 Debug doesn't work in multithread application

+0

虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效 – abarisone

相关问题