【发布时间】:2017-09-05 20:01:51
【问题描述】:
我说的语言是VB。
我在这个问题上苦苦挣扎了三个多星期,但仍然看不到解决方案。 问题如下: 我在一个子程序中运行了一个密集的计算,同时在这个过程中修改了很多 GUI。一段时间后,应用程序冻结并且“没有响应”。计算完成后,一切都突然发生在我修改过的点上。没什么特别的。 但是,如果我现在尝试使用线程启动子程序,因此应用程序不再冻结,我将无法访问 GUI,因为“它不是由线程本身创建的”。 我该如何解决这个问题? 更具体地说:如何访问有关 GUI 的信息(尤其是 PictureBox 的宽度和高度)并修改 GUI(尤其是在 PictureBox 中设置 BackgroundPicture)? 任何帮助表示赞赏。谢谢!
【问题讨论】:
-
Control.Invoke/BeginInvoke 处理这个,例如codeproject.com/Articles/10311/What-s-up-with-BeginInvoke
-
BackgroundWorker类就是为此目的而设计的。
标签: vb.net multithreading user-interface