雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網!

C#教程

當前位置:主頁 > 軟件編程 > C#教程 >

WPF通過線程使用ProcessBar的方法詳解

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊:

前言

WPF下使用進度條也是非常方便的,如果直接采用循環(huán)然后給ProcessBar賦值,理論上是沒有問題的,不過這樣會卡主主UI線程,我們看到的效果等全部都結束循環(huán)后才出現最后的值。

所以需要采用線程或者后臺方式給進度條賦值的方式,以下通過線程來觸發(fā)事件觸發(fā)的方式來實現給進度條賦值。這樣就可以模擬我們在實際過程中處理數據的一種進度方式。

方法示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfTestProcessBar
{
 /// <summary>
 /// MainWindow.xaml 的交互邏輯
 /// </summary>
 public partial class MainWindow : Window
 {
  public delegate void ProgressDelegate(int percent);
  public MainWindow()
  {
   InitializeComponent();
   ProgressEvent += MainWindow_ProgressEvent;
   beginImport();
  }
  void MainWindow_ProgressEvent(int percent)
  {
   Dispatcher.Invoke(new Action<System.Windows.DependencyProperty, object>(Pro.SetValue), System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, Convert.ToDouble(percent+ 1) });
   Dispatcher.Invoke(new Action<System.Windows.DependencyProperty, object>(label.SetValue), System.Windows.Threading.DispatcherPriority.Background, new object[] { Label.ContentProperty, Convert.ToString((percent + 1)+"%") }); 

  }
  private event ProgressDelegate ProgressEvent;
  private void beginImport()
  {
   Pro.Maximum = 100;
   Pro.Value = 0;
   label.Content = "0%";
   ThreadPool.QueueUserWorkItem(state =>
   {
    Thread.Sleep(2000);
    for (int i = 0; i < 100; i++)
    {
     if (ProgressEvent != null)
     {
      ProgressEvent(i);
     }
     Thread.Sleep(10);
    }
   });
  }
 }
}

以上只是一種實現方式,希望給有需要的人提供幫助。

效果如下:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。

上一篇:C# 填充Excel圖表、圖例背景色的實例代碼

欄    目:C#教程

下一篇:C#獲取App.Config配置項的方法總結

本文標題:WPF通過線程使用ProcessBar的方法詳解

本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/4793.html

網頁制作CMS教程網絡編程軟件編程腳本語言數據庫服務器

如果侵犯了您的權利,請與我們聯系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網 版權所有