c# - 在 Debug模式下单步执行时 GUI 不会重绘

标签 c# .net winforms .net-2.0

在任何 .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/

相关文章:

c# - 检查mysql表是否存在多个

c# - MVVMCross:如何将 Xamarin.Android 事件绑定(bind)到 ViewModel 命令

c# - ADO.Net DataTables 有索引吗?

c# - 如何在 FireFox 运行时访问 FireFox 3 书签?

c# - 如何设置 DataGridView 行/列的标题

C# 序列化不会向 xml 文件中的属性添加值

c# - Xamarin IOS 隐藏栏后退按钮

c# - LINQ 向 WHERE 子句添加额外的逻辑

.net - 缺少异步重载?

c# - 如何检查 (c#) ControlCollection.Find() 是否返回结果