【发布时间】:2017-06-21 16:45:27
【问题描述】:
我有一个用 Visual Studio 编写的 winforms 程序,用 Visual Basic 编码。
程序的主要部分是一个 while 循环,它发送串行命令、将数据写入 sql、执行基本算术并更新表单上的控件。我在后台工作人员执行工作子程序中有这个while循环,以便可以在后台工作人员子程序仍在运行时更新控件。运行一段时间后,我的表单将冻结,同时更新几个文本框。但是,后台工作程序继续运行,sql 数据仍然被写入,最奇怪的是,单击表单上的按钮会执行应有的操作,即使我们看不到该按钮被按下。
我想不出有什么会导致这样的行为,在视觉上表单被冻结,但所有控件仍然响应。
【问题讨论】:
-
消防水管问题的迹象,从工作线程调用的速度超过了 UI 可以跟上的速度。从任务管理器中应该可以看到,您应该看到它正在燃烧 100% 核心。并且看到它使用越来越多的内存,最终导致您的程序崩溃。你必须走得慢一点。并且不要无休止地将文本附加到 TextBox,您必须不时将旧文本丢弃。
-
I have this while loop in a background workers do work sub so that the controls can be updated from the background worker sub这不是它应该如何工作的。在 BGW 上执行工作并仅从 UI 线程更新 UI。 BGW 包含用于报告进度的方法和事件
标签: vb.net winforms visual-studio