【发布时间】:2013-10-14 16:45:46
【问题描述】:
我有一个后台工作人员,我正在使用它来运行一个大型函数,以期加快我的窗口加载和响应速度。当我将此函数放在后台工作人员的 doWork 事件中时,我只是想知道是否可以优先考虑在 BGW 完成后立即更新该文本,而不是等待 UI 线程完成然后更新文本框。这可能吗?我只是问,因为在运行函数后似乎需要相当多的时间来更新文本框(大约需要 1.5-2 秒),但即使我启动 BGW 甚至在窗口加载之前开始(需要 5 秒才能加载) ),它仍然是我窗口上要更新的最后一个项目,所以我想(如果可能的话)暂停 UI 线程更新 UI,直到我用这个函数返回的内容进行更新,然后继续更新其余的标签。
另外,是否可以一次更新两个单独的项目,还是仅限于一个 UI 线程?
【问题讨论】:
-
BackgroundWorkers 不会让事情变得更快,它们只是提供了一种运行代码而不阻塞 GUI 的方法。话虽如此,听起来您仍在运行阻止 GUI 的代码,因为您是
waiting for the UI thread to finish。您将不得不发布一些代码。
标签: vb.net multithreading winforms backgroundworker