0

我一直在尝试降低应用程序使用的主窗口的加载时间(10k+ 行代码),并尝试将线程集成到程序的一种方法中。我正在尝试拆分显示方法,它在表单上设置所有数据,它的长度超过 1000 行,因此拆分它会减少表单的加载时间。

我对线程仍然很陌生,但由于实际上没有任何改变,我只是将显示代码并排运行,我认为线程将是最好的选择。不过,这有一个问题。他们都使用类似的方法来确定表单上的组件是否应该根据帐户可见/启用。

当它尝试在表单上设置组件的文本时,这就是我遇到异常的地方。我已阅读此内容,您无法从另一个线程更新线程中的项目,但我无法在线找到解决方案或帮助。有哪些可能的解决方案?

4

2 回答 2

0

您可以使用调用函数Obj.Invoke(Delegate)

于 2012-08-29T17:52:22.430 回答
0

您需要使用控件或窗体的Invoke方法或BeginInvoke方法。所有Control对象都有这些方法,并且由于Form继承自Control,所有形式也有这些方法。这两种方法都会从 UI 线程调用给定的委托。但是,如果 UI 线程很忙,则在线程空闲之前它不会执行委托。如果您调用Invoke,您的工作线程将被阻塞(挂起),直到 UI 线程完成执行委托。但是,如果您调用BeginInvoke,则工作线程将继续运行并且不会等待 UI 线程执行委托。

于 2012-08-29T18:01:28.210 回答