我前一阵子重构我的应用程序,从那时起我一直在使用Visual Studio 2010中应用只挂断点被触发时,.NET,C#,Visual Studio中
我的应用程序按预期工作具有调试问题而不是而不是调试(不通过应用程序,附加的调试器不会导致任何问题)。但是,当触发断点时,我开始浏览应用程序,Visual Studio和应用程序在最多3-4步后都会挂起。
更加强调这一点:它与我的客户一起工作良好,无论是从Visual Studio开始还是独立开展工作 - 只要没有触发任何中断点。
无论我在代码中放置断点的位置如何。
IDE:Visual Studio 2010中的x64
平台:.NET 4.0
重构包括了许多跨线程调用来BeginInvoke
- 通过以下方式全渠道:
public static void BeginInvokeIfRequired(this Control control, Action action)
{
if (control.InvokeRequired)
{
control.BeginInvoke(action);
}
else
{
action.Invoke();
}
}
有在项目中不需要致电Control.Invoke()
。
- 上述方法有问题吗?
此外,我会很感激任何提示你如何追踪这个错误。我目前的做法是将输出添加到控制台并选择性地停用部分代码。
嗨! :)几乎可以肯定,这个问题是多线程相关的......你有任何类型的线程等待/锁定的东西,可能会导致循环死锁? – 2012-01-05 08:31:34
@DarylTeo在部分代码中没有锁定。唯一的锁定语句在启动后立即执行 – yas4891 2012-01-05 08:39:17
多线程,编辑并继续。 ThreadPools它的奇迹它的作用(大部分时间)。有时候,解决方案和代码的复杂性只会影响视觉工作室。我注意到一些第三方组件简单地打破了这种类型的代码,它甚至可能是一些重新编写的代码打破调试器等。 – CodingBarfield 2012-01-05 10:25:49