当FindFiles进程完成时通知

本文关键字:通知 完成时 进程 FindFiles | 更新日期: 2023-09-27 18:17:09

我有一个多线程的应用程序,我已经创建了一个生产者/消费者模式的XML文件等的处理

我想知道的是什么是更新UI的好方法,什么时候完成这个过程。

我应该使用线程方法创建Barrier等待所有任务完成还是应该创建一个事件/委托让UI在UI更新/完成时捕获这个

当FindFiles进程完成时通知

您可以签出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上显示更新,这样用户就知道发生了什么。如果发生了用户可能正在等待的事情,那么有一个进度条也是很好的。如果你没有一个好的方法来显示真正的进度,进度条可以只是一个选框。