嘿,我有一系列代码如下:
label.Text = "update 0";
doWork();
label.Text = "update 1";
doWork2();
label.Text = "update 2";
Run Code Online (Sandbox Code Playgroud)
基本上,在完成所有代码执行之前,GUI根本不会更新.怎么克服这个?
Mar*_*ers 16
一个丑陋的黑客是使用Application.DoEvents.虽然这有效,但我建议不要这样做.
更好的解决方案是使用一个BackgroundWorker或一个单独的线程来执行长时间运行的任务.不要使用GUI线程,因为这会导致它阻塞.
需要注意的一件重要事情是,必须在GUI线程上对GUI进行更改,因此您需要将控制权转移回GUI线程,以便标记更新.这是使用完成的Invoke.如果您使用BackgroundWorker,则可以使用ReportProgress - 这将自动为您调用Invoke.
| 归档时间: |
|
| 查看次数: |
9964 次 |
| 最近记录: |