zoukankan      html  css  js  c++  java
  • wpf 异步加载 只需6段代码

    private BackgroundWorker worker = null;
    ProgressBar probar = new ProgressBar();
    private int percentValue = 0;
    private int percent;

    public MainWindow()
    {
    InitializeComponent();
    }


    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
    worker = new BackgroundWorker();
    worker.WorkerReportsProgress=true;
    worker.WorkerSupportsCancellation = true;
    worker.DoWork += new DoWorkEventHandler(worker_DoWork);
    worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
    worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompleteWork);
    percentValue = 1000;
    this.probar.Maximum = 100;
    // 执行后台操作
    worker.RunWorkerAsync();

    }

    /// <summary>
    /// 完成时
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void CompleteWork(object sender, RunWorkerCompletedEventArgs e)
    {
    MessageBox.Show("处理完毕!");
    }

    //进度更改时
    private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
    //probar.Value = double.Parse(e.ProgressPercentage.ToString());
    percent = (int)(e.ProgressPercentage / percentValue);
    this.text1.Text = "处理进度:" + Convert.ToString(percent) + "%";
    probar.Value = percent;
    }

    /// <summary>
    /// 执行
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void worker_DoWork(object sender, DoWorkEventArgs e)
    {
    e.Result = ProcessProgress(worker, e);
    }
    private int ProcessProgress(object sender, DoWorkEventArgs e)
    {
    for (int i = 0; i <= 1000000; i++)
    {
    if (worker.CancellationPending)
    {
    e.Cancel = true;
    return -1;
    }
    else
    {
    // 状态报告
    worker.ReportProgress(i);
    // 等待,用于UI刷新界面,很重要
    System.Threading.Thread.Sleep(1);
    }
    }
    return -1;
    }

    至少证明我们还活着
  • 相关阅读:
    np背包问题【算法:折半枚举】
    数字游戏【后缀积问题,一个数学分析问题】
    bfs求最短路径
    利用费马小定理求逆元
    [蓝桥杯2016初赛]剪邮票【全排列,连通块】
    np背包问题【算法:折半枚举】
    火星救[数学,一点前缀和]
    bfs求最短路径
    检测一个正整数是否是2的N次方
    IIS与asp.net身份认证
  • 原文地址:https://www.cnblogs.com/pengde/p/4665462.html
Copyright © 2011-2022 走看看