zoukankan      html  css  js  c++  java
  • BackgroundWroker使用方法备忘

    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Threading;

    namespace WindowsFormsApplication1
    {
    publicpartialclass Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    worker
    =new BackgroundWorker();
    worker.DoWork
    +=new DoWorkEventHandler(worker_DoWork);
    worker.ProgressChanged
    +=new ProgressChangedEventHandler(worker_ProgressChanged);
    worker.RunWorkerCompleted
    +=new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
    worker.WorkerReportsProgress
    =true; //允许进度显示
    worker.WorkerSupportsCancellation =true; //允许运行中取消
    }

    BackgroundWorker worker;

    privatevoid Form1_Load(object sender, EventArgs e)
    {

    }

    privatevoid worker_DoWork(object sender, DoWorkEventArgs e)
    {
    for (int i =0; i <300; i++)
    {
    Thread.Sleep(
    100);
    //每隔一段时间就向主线程报告进度,以便更新进度条。
    //多数情况下,你只需要发送一个整数去更新即可
    worker.ReportProgress(i/3);
    if (worker.CancellationPending)
    {
    //如果任务被取消
    e.Cancel =true;
    worker.ReportProgress(
    0);
    return;
    }
    }
    }

    privatevoid worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
    pbarThis.Value
    = e.ProgressPercentage;
    lblText.Text
    ="已经处理了 "+ pbarThis.Value.ToString() +"%";
    }

    privatevoid worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    if (e.Cancelled)
    {
    lblText.Text
    ="任务取消";
    }
    elseif (e.Error !=null)
    {
    lblText.Text
    ="发生错误";
    }
    else
    {
    lblText.Text
    ="任务完成";
    }
    btnStart.Enabled
    =true;
    btnCancel.Enabled
    =false;
    }

    privatevoid btnStart_Click(object sender, EventArgs e)
    {
    btnStart.Enabled
    =false;
    btnCancel.Enabled
    =true;

    //通知主线程开始进行数据处理
    worker.RunWorkerAsync();
    }

    privatevoid btnCancel_Click(object sender, EventArgs e)
    {
    if (worker.IsBusy)
    {

    worker.CancelAsync();
    }
    }
    }
    }
  • 相关阅读:
    高阶篇:1.2)材料和工艺的选择
    高阶篇:4.1.1)QFDI(客户需求转换为设计要求)
    高阶篇:4)可靠性设计-总章
    高阶篇:1.5)如何选择更好的概念-Pugh矩阵法
    知识点篇:2)产品结构设计目标的分类
    高阶篇:1.1)竞品(标杆产品)的拆解和分析benchmarking
    支持向量机
    机器学习概述
    HDU_oj_2055 An easy problem
    HDU_oj_2054 A==B ?
  • 原文地址:https://www.cnblogs.com/scy251147/p/2145197.html
Copyright © 2011-2022 走看看