我知道这个问题以前曾被问过,但我觉得没有被正确地问过。
我需要进行大量操作,并且希望UI保持响应状态。我读过几篇文章说,背景 worker 是最好的选择,但是,我认为这是假设您已经掌握了繁重任务的源代码。
我有一个我没有源代码的库,检查进度的唯一方法是将事件附加到事件中并以这种方式获取信息。
我在MSDN站点上看到的示例假定一个源即可。
我知道如何通过附加事件来获取进度(这是一个百分比值),但是如何将该值返回给UI?
最佳答案
下面的答案是基于我的直觉,实际上并没有对第三方库进行测试。
private void EventHandler(object sender, DirtyEventArgs e)
{
if (myControl.InvokeRequired)
myControl.Invoke(new MethodInvoker(MethodToUpdateUI), e);
else
MethodToUpdateUI(e);
}
private void MethodToUpdateUI(object obj)
{
// Update UI
}
关于winforms - 从其他线程更新UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724972/