【发布时间】:2013-03-06 18:23:57
【问题描述】:
在任何 .NET 2.0 Winforms 应用程序中,如果您在调试模式下运行代码,并且您遇到断点或以其他方式逐行进入代码,并且您希望查看正在调试的应用程序的 GUI,那么.NET 不绘制应用程序屏幕。
例如,我有一个将一些消息写入表单上的文本框的应用程序。当我逐步调试代码时,或者遇到断点时,我想查看 TextBox 中记录的所有消息,但是如果我按 Alt-Tab 从 VS2005 窗口切换到 WinForms 应用程序窗口,我看到的都是是白色。表格不会重绘,直到您在 VS2005 的调试模式下按 F5。
这是什么原因,有没有办法克服这个问题,而不在代码中引入任何线程?
【问题讨论】:
-
当你进入你的进程时,所有线程都被挂起,所以没有消息被泵送。您最好使用
Debug.WriteLine写入调试输出并观察那里出现的内容而不必中断。 -
当然,调试器冻结了 UI 线程。在您恢复运行之前,该窗口不会更新。稍后,当 UI 线程再次空闲并获取绘制请求时。这是设计使然。
-
@vcsjones: 是的,但是当您跨过它们时,任何不通过消息泵的事情(例如对 OnPaint() 的调用)会不会在调试器中同步发生?
-
我想这完全取决于您要调试的是否是 UI 渲染问题。