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();
    }
    }
    }
    }
  • 相关阅读:
    Shiro 集成Spring 使用 redis时 使用redisTemplate替代jedisPool(五)
    shiro 实现 网站登录记住我功能 学习记录(四)
    magento2根据属性id或code来添加options
    微信小程序-注册程序app.js
    微信小程序-目录结构
    如何在最新的PHP 7.1.0上安装和运行最新的Magento 2.1.3
    添加新的php版本到wamp中
    全局使用php
    PHP设计模式之单例模式
    SourceTree使用
  • 原文地址:https://www.cnblogs.com/scy251147/p/2145197.html
Copyright © 2011-2022 走看看