如何使当我得到大数据用户知道的方法是运行不冻结

本文关键字:方法 运行 冻结 用户 何使当 数据 | 更新日期: 2023-09-27 18:06:47

我有一个方法,可能需要很长时间才能完成。我想防止我的程序在这个方法运行时冻结。

我怎么做才能向用户显示它正在运行该方法(例如进度条)?

如何使当我得到大数据用户知道的方法是运行不冻结

首先,正如H.B所说,如果方法在某些后台线程中异步运行,那么您的UI将不会冻结。

如果你想在你的UI上有一个进度条,可以告诉用户完成了多少进度,那么你可以使用BackgroundWorker的ReportProgress功能

你应该使用BackgroundWorker类。它比纯线程更好,因为它做了一些额外的东西。现在想不起来了,我做WPF已经很久了。下面的代码将为您提供帮助:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        BackgroundWorker worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.RunWorkerAsync();
    }
    void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < 10; i++ )
        {
            Thread.Sleep(500);
            Dispatcher.Invoke(new Action(() => { this.progressBar1.Value++; }));
        }
    }