当FindFiles进程完成时通知
本文关键字:通知 完成时 进程 FindFiles | 更新日期: 2023-09-27 18:17:09
我有一个多线程的应用程序,我已经创建了一个生产者/消费者模式的XML文件等的处理
我想知道的是什么是更新UI的好方法,什么时候完成这个过程。
我应该使用线程方法创建Barrier等待所有任务完成还是应该创建一个事件/委托让UI在UI更新/完成时捕获这个
您可以签出Signalr,它允许您实现向客户端推送通知。
对不起,这个答案是假设Windows窗体,因为一开始没有asp.net标签。
您可以使用Form.Invoke()从非gui线程更新内容,这里有一个简单的示例:
private void Form1_Load(object sender, EventArgs e)
{
Thread thread = new Thread(DoStuff);
thread.Start();
}
void DoStuff()
{
Thread.Sleep(1000);
this.Invoke(new Action(() => MessageBox.Show("Hey, this was invoked")));
}
使用Invoke,你可以对Form做任何事情,它在Form的线程中运行被调用的动作。你可以改变你的状态文本之类的。当然,您不应该将"业务逻辑"放在Form类中,也不应该使用Thread。Sleep,我只是展示了一个非常基本的事实你可以用这种方式回调UI线程
至于您是否应该等待所有任务完成后再执行任何操作,或者在它们执行时显示状态更新,这完全取决于您。我喜欢尽可能在UI上显示更新,这样用户就知道发生了什么。如果发生了用户可能正在等待的事情,那么有一个进度条也是很好的。如果你没有一个好的方法来显示真正的进度,进度条可以只是一个选框。