簡體   English   中英

WPF C#進度條不會更新,直到在后台工作完成工作后

[英]wpf c# progress bar wont update untill after work is done when in background worker

以下是一些我用來在window1上顯示進度條的代碼。 但是,當在我的主窗口上完成工作時,進度條將凍結,然后跳至后台工作人員所處的任何階段。總之,進度條會不斷更新嗎? 即使在其他窗口中完成工作

public SplashScreen()
        {
            InitializeComponent();
            //Timer();


            CreateBackGroundWorker();
           // int shareProgressBarValue = MainSharePage.shareProgressBarValue;

            LoginPage LoginPage = new LoginPage();
            LoginPage.Show();


        }

        private void CreateBackGroundWorker()
        {
            BackgroundWorker worker = new BackgroundWorker();
            worker.RunWorkerCompleted += worker_RunWorkerCompleted;
            worker.WorkerReportsProgress = true;
            worker.DoWork += worker_DoWork;
            worker.ProgressChanged += worker_ProgressChanged;
            worker.RunWorkerAsync();
        }

        private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
           this.ProgressBar.Value = e.ProgressPercentage;
            //ShareProgressBarText.Text = (string)e.UserState;
        }

        private void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            worker.ReportProgress(0, String.Format("Processing Iteration 1."));
            for (int i = 0; i < 100; i++)
            {
                Thread.Sleep(1000);
                worker.ReportProgress((i + 1), String.Format("Processing Iteration {0}.", i + 2));
            }

            worker.ReportProgress(100, "Done Processing.");
        }

我復制粘貼了您的代碼,並刪除了處理您的LoginPage的兩行,這對我來說是完美的。

然后,我創建了一個空窗口來代替LoginPage ,並添加了相同的兩行來顯示它,但它仍然有效。

我猜問題出在您的LoginPage中,它必須以某種方式阻止UI線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM