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();
    }
    }
    }
    }
  • 相关阅读:
    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
    MLIR算子量化Quantization
    最大限度地减少块输出中间结果的计算和存储
    Echarts(一)
    Oracle部署安装
    JS使用
    sqlplus导入sql,dmp导入导出
    一款强大的Visual Studio插件!CodeRush v19.1.9全新来袭
    Web界面开发必看!Kendo UI for jQuery编辑功能指南第二弹
    报表开发神器!DevExpress Reporting v19.1全平台新功能解析
  • 原文地址:https://www.cnblogs.com/scy251147/p/2145197.html
Copyright © 2011-2022 走看看