欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

方法示例:

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

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

效果如下:

總結(jié)

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

相關(guān)文章

  • Unity 如何獲取鼠標停留位置下的物體

    Unity 如何獲取鼠標停留位置下的物體

    這篇文章主要介紹了Unity 如何獲取鼠標停留位置下的物體,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#字符串的截取函數(shù)用法總結(jié)

    C#字符串的截取函數(shù)用法總結(jié)

    這篇文章主要介紹了C#字符串的截取函數(shù)用法,實例總結(jié)了substring,Remove,indexOf等函數(shù)的用法,并對具體應(yīng)用進行了實例分析,需要的朋友可以參考下
    2014-10-10
  • C#給圖片添加水印完整實例

    C#給圖片添加水印完整實例

    這篇文章主要介紹了C#給圖片添加水印的方法,以完整實例形式分析了C#實現(xiàn)文字及圖像水印、縮略圖、圖片剪切等相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶

    微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶

    本文主要介紹了微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶的實現(xiàn)方法與步驟。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • C#高效比較兩個DataTable數(shù)據(jù)差異化的方法實現(xiàn)

    C#高效比較兩個DataTable數(shù)據(jù)差異化的方法實現(xiàn)

    本文主要介紹了C#高效比較兩個DataTable數(shù)據(jù)差異化的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 一文帶你吃透C#中面向?qū)ο蟮南嚓P(guān)知識

    一文帶你吃透C#中面向?qū)ο蟮南嚓P(guān)知識

    這篇文章主要為大家詳細介紹了C#中面向?qū)ο蟮南嚓P(guān)知識,文中的示例代碼講解詳細,對我們學(xué)習(xí)C#有一定的幫助,需要的小伙伴可以參考一下
    2023-02-02
  • c# 實現(xiàn)語音聊天的實戰(zhàn)示例

    c# 實現(xiàn)語音聊天的實戰(zhàn)示例

    這篇文章主要介紹了c# 實現(xiàn)語音聊天的實戰(zhàn)示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • 關(guān)于finalize機制和引用、引用隊列的用法詳解

    關(guān)于finalize機制和引用、引用隊列的用法詳解

    下面小編就為大家?guī)硪黄P(guān)于finalize機制和引用、引用隊列的用法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 利用WCF雙工模式實現(xiàn)即時通訊

    利用WCF雙工模式實現(xiàn)即時通訊

    這篇文章主要介紹了利用WCF雙工模式實現(xiàn)即時通訊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C# 設(shè)計模式系列教程-橋接模式

    C# 設(shè)計模式系列教程-橋接模式

    橋接模式降低了沿著兩個或多個維度擴展時的復(fù)雜度,防止類的過度膨脹,解除了兩個或多個維度之間的耦合,使它們沿著各自方向變化而不互相影響。
    2016-06-06

最新評論