在任何 .NET 2.0 Winforms 应用程序中,如果您在 Debug模式下运行代码,并且您要么命中断点,要么逐行单步执行代码,并且您希望查看正在调试的应用程序的 GUI,那么.NET 不绘制应用程序屏幕。
例如,我有一个应用程序,它将一些消息写入表单上的文本框。当我一步步调试代码时,或者当断点被命中时,我想查看 TextBox 中记录的所有消息,但是如果我按 Alt-Tab 从 VS2005 窗口切换到 WinForms 应用程序窗口,我看到的只是是白色。除非您在 VS2005 的 Debug模式下按 F5,否则该窗体不会重绘。
这是什么原因,有没有办法克服这个问题,而不在代码中引入任何线程?
最佳答案
What is the reason for this
在调试时,您实际上阻塞了 UI 线程 - 您正在手动单步执行其执行流程。当您停止执行 UI 线程时,它无法绘制 UI。
and is there a way to overcome this
您可以尝试手动调用Application.DoEvents()
,但我通常建议不要这样做。
最好等到方法结束并让 UI 正常重绘。如果您的方法非常长(就时间而言),请记住,当不进行调试时,UI 在该方法执行时仍然无法 self 更新。这可能会导致您更改设计(仅从我们目前掌握的信息很难判断)。
关于c# - 在 Debug模式下单步执行时 GUI 不会重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15255078/