最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年04月11日 10:27:04   作者:風(fēng)幻影  
這篇文章主要給大家介紹了關(guān)于WPF通過線程使用ProcessBar的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用WPF具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

方法示例:

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);
    }
   });
  }
 }
}

以上只是一種實(shí)現(xiàn)方式,希望給有需要的人提供幫助。

效果如下:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

中牟县| 化德县| 乌什县| 平武县| 邯郸县| 会同县| 比如县| 神池县| 开原市| 洛阳市| 淅川县| 哈巴河县| 启东市| 卢氏县| 五莲县| 炎陵县| 贵州省| 遵义县| 邻水| 岑巩县| 犍为县| 双牌县| 汝南县| 浪卡子县| 平利县| 梁河县| 武穴市| 萨嘎县| 西乡县| 西充县| 太湖县| 锡林郭勒盟| 全州县| 祁门县| 福海县| 扶沟县| 太原市| 凌云县| 靖宇县| 望谟县| 嫩江县|