zoukankan      html  css  js  c++  java
  • BackgroundWorker学习

    后台代码:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 
     10 namespace winform
     11 {
     12     public partial class fm : Form
     13     {
     14         BackgroundWorker worker;
     15         public fm()
     16         {
     17             InitializeComponent();
     18             worker = new BackgroundWorker();
     19             worker.WorkerReportsProgress = true;
     20             worker.WorkerSupportsCancellation = true;
     21             //正式做事情的地方
     22             worker.DoWork += new DoWorkEventHandler(DoWork);
     23             //任务完称时要做的,比如提示等等
     24             worker.ProgressChanged += new ProgressChangedEventHandler(ProgessChanged);
     25             //任务进行时,报告进度
     26             worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted);
     27             progressBar1.Maximum = 100;
     28         }
     29         //调用 RunWorkerAsync 时发生
     30         public void DoWork(object sender, DoWorkEventArgs e)
     31         {
     32             e.Result = ComputeFibonacci(worker, e);
     33 
     34             //获取异步操作结果的值,当ComputeFibonacci(worker, e)返回时,异步过程结束
     35         }
     36 
     37         //调用 ReportProgress 时发生
     38         public void ProgessChanged(object sender, ProgressChangedEventArgs e)
     39         {
     40             this.progressBar1.Value = e.ProgressPercentage;
     41             //将异步任务进度的百分比赋给进度条
     42             int value = int.Parse(e.UserState.ToString());
     43             if (value % 10 == 0)
     44                 textBox1.Text += "
    " + value;
     45             else
     46                 textBox1.Text += "-" + value;
     47             label1.Text = string.Format("完成{0}%", (value + 1) * 100 / progressBar1.Maximum);
     48         }
     49 
     50         //当后台操作已完成、被取消或引发异常时发生
     51         public void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
     52         {
     53             if (e.Cancelled)
     54                 MessageBox.Show("取消了");
     55             else
     56                 MessageBox.Show("完成!" + e.Result);
     57         }
     58 
     59         private int ComputeFibonacci(object sender, DoWorkEventArgs e)
     60         {
     61 
     62             for (int i = 0; i < 100; i++)
     63             {
     64                 //判断应用程序是否取消后台操作
     65                 if (worker.CancellationPending)
     66                 {
     67                     e.Cancel = true;
     68                     break;
     69                 }
     70                 //dowork function
     71                 worker.ReportProgress(i, i);
     72                 System.Threading.Thread.Sleep(50);
     73             }
     74             return -1;
     75         }
     76         private void btnStart_Click(object sender, EventArgs e)
     77         {
     78             if (worker.IsBusy)
     79             {
     80                 MessageBox.Show("已经执行异步操作");
     81                 return;
     82             }
     83             textBox1.Text = "";
     84             label1.Text = "";
     85             worker.RunWorkerAsync();
     86 
     87             btnStart.Enabled = false;
     88 
     89             btnPause.Enabled = true;
     90         }
     91 
     92         private void btnPause_Click(object sender, EventArgs e)
     93         {
     94             btnPause.Enabled = false;
     95 
     96             btnStart.Enabled = true;
     97 
     98             worker.CancelAsync();
     99         }
    100     }
    101 }
    View Code

    页面效果:

  • 相关阅读:
    凤凰网面试经历——钢管舞也算精英文化吗
    立此为证:豆瓣要做电影数字发行了(2010818)
    Officially GoldenGate was purchased by oracle in October 1, 2009
    11gR2新特性:Heavy swapping observed on system in last 5 mins.
    Oracle BMW Racing sailing vessel帆船图
    Know more about CBO Index Cost
    Samsung Epic 4G 图文介绍
    Oracle Exalogic X22 HalfRack DiagramExaloic半配图
    Java 编程下线程的生命周期
    Android 编程组件Fragments 的生命周期与 Activity 的生命周期之间的关系
  • 原文地址:https://www.cnblogs.com/systemkk/p/6043514.html
Copyright © 2011-2022 走看看