Ser*_*gey 4 .net multithreading winforms
这可能是一个愚蠢的问题,但我找不到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");
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Don*_*kby 13
在WinForms中执行后台任务的最简单方法是使用BackgroundWorker.
DoWork.你可能也想要RunWorkerCompleted.DoWork活动中写下你的后台任务.RunWorkerCompleted事件中写下任何UI更改.backgroundWorker1.RunWorkerAsync();启动过程,可能来自某个按钮处理程序.使用BackgroundWorker避免了所有烦人的线程处理和IsInvokeRequired的东西.
这是一篇更详细的how-to文章.
| 归档时间: |
|
| 查看次数: |
10882 次 |
| 最近记录: |