这可能是一个愚蠢的问题,但我在 stackoverflow 上找不到答案。
我在 Winform 应用程序中有一个按钮单击事件,该应用程序运行一个线程来计算要在表单中显示的结果。
当线程计算出结果后,如何更新 Forms UI?
private void btnRequestR2Approval_Click(object sender, EventArgs e)
{
if (User.IsLogged)
{
ValidationResults results = new ValidationResults();
results.Show();
Logger log = Logger.Instance();
Logger.NewLogAddedHandler messageDelegate = new Logger.NewLogAddedHandler(results.NewLogMessage);
if (!log.IsEventHandlerRegistered())
{
log.NewLogAdded += messageDelegate;
}
ThreadStart operation = new ThreadStart(ValidateAndSubmit);
Thread theThread = new Thread(operation);
theThread.Start();
}
else
{
MessageBox.Show("Please login");
}
}
谢谢
在 WinForms 中执行后台任务的最简单技术是使用后台工作者.
- 将其放到表格上。
- 连接事件。至少使用
DoWork
。您可能还想要RunWorkerCompleted
.
- 将您的后台任务写入
DoWork
event.
- 将任何 UI 更改写入
RunWorkerCompleted
event.
- Call
backgroundWorker1.RunWorkerAsync();
启动该过程,可能来自某个按钮处理程序。
使用BackgroundWorker 可以避免所有烦人的线程处理和IsInvokeRequired 的东西。
这里有更详细的操作方法文章.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)