Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我让大数据用户知道该方法正在运行而不被冻结时,该如何做?_C#_Wpf_Freeze - Fatal编程技术网

C# 当我让大数据用户知道该方法正在运行而不被冻结时,该如何做?

C# 当我让大数据用户知道该方法正在运行而不被冻结时,该如何做?,c#,wpf,freeze,C#,Wpf,Freeze,我有一个可能需要很长时间才能完成的方法。我想防止程序在该方法运行时冻结 如何向用户显示它正在运行该方法(例如进度条)?您应该使用BackgroundWorker类。它比纯线程更好,因为它做了一些额外的事情。现在不记得了,我已经做WPF很久了。此代码将帮助您: private void button1_Click(object sender, RoutedEventArgs e) { BackgroundWorker worker = new BackgroundW

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


如何向用户显示它正在运行该方法(例如进度条)?

您应该使用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++; }));
        }
    }
private void按钮1\u单击(对象发送者,路由目标)
{
BackgroundWorker工人=新的BackgroundWorker();
worker.DoWork+=新的doworkereventhandler(worker\u DoWork);
worker.RunWorkerAsync();
}
无效工作线程(对象发送器,工作线程目标)
{
对于(int i=0;i<10;i++)
{
睡眠(500);
Invoke(新操作(()=>{this.progressBar1.Value++;}));
}
}

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


如果你想在你的用户界面上有一个进度条,可以告诉用户完成了多少进度,那么你可以使用a的功能,如果该方法是异步的,它无论如何都不应该冻结…很抱歉我写错了。如果我不使用异步方法,它将冻结,如何让用户知道方法正在运行?prgoress bar显示完成的百分比,我不能这样做,因为我不知道如何获得该百分比。如果您只想显示正在进行的事情,可能有一个加载ui。请使用BackgroundWorker完成时引发的事件,即
BackgroundWorker.completed
。您不理解我,我知道它何时完成,但不知道工作时间