• 大小: 41KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: C#
  • 标签: background  

资源简介

backgroundworker+process进度条完整解决方案,以测试通过

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
//// 该例子在 Backgroundworker 组件的辅助线程上随机产生整数,辅助线程运行DoWork事件处理程序,//
////当产生能被5整除的整数时,使用ProgressChanged事件把整数显示到窗体上。//
////程序执行到 RunWorkerAsync 方法时,将启动后台线程。 在Dowork事件中,
//如果应用程序没有取消后台操作,将不停的产生随机整数,然后判断该整数能否被5整除,
//如果能被5整除,执行work.ReportProgress方法来触发 ProgressChanged 事件,
//在 ProgressChanged 事件中与界面长须打交道,把生产的随机整数显示到窗体上。//
namespace backgroundworker3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private bool isSuspend;//是否需要暂停操作

        private void Form1_Load(object sender EventArgs e)
        {
            backgroundWorker1.WorkerReportsProgress = true;//声明可以报告进度
            backgroundWorker1.WorkerSupportsCancellation = true;//可以异步取消
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 100;
            progressBar1.Step = 10;
        }
        /// 模拟一个耗时的方法(让线程休眠0.1秒)
        private void GetData()
        {
            System.Threading.Thread.Sleep(100);
        }

        private void button1_Click(object sender EventArgs e)
        {
            bool aa = backgroundWorker1.IsBusy;
            label1.Text = aa.ToString();
            if (!backgroundWorker1.IsBusy) //如果dowork处于不忙状态,可以执行操作
            {
                backgroundWorker1.RunWorkerAsync();
            }
            
        }
        /// backgroundWorker的核心事件1,执行耗时的操作就在个方法里执行
         //下面的内容相当于线程要处理的内容。//注意:不要在此事件中和界面控件打交道

        //不要直接使用组件实例名称(backgroundWorker1)因为有多个BackgroundWorker时,   
        //直接使用会产生耦合问题,应该通过下面的转换使用它  
        private void backgroundWorker1_DoWork(object sender DoWorkEventArgs e)
        {
            
           
            
            
          BackgroundWorker worker = sender as BackgroundWorker;  
            
          Random r = new Random();  
           int numCount = 0;            
            while (worker.CancellationPending == false&&numCount<10)           
            {  
                int num = r.Next(0 100);  
                if (num % 5 == 0)  
               {  
                   numCount++;
                 
                   worker.ReportProgress(numCount num); 
                
                    Thread.Sleep(1000);  
               }
                while (isSuspend)
                {
                    Thread.Sleep(50);
                }
            }  
            e.Result = numCount;  

        }
        /// backgroundWorker的核心事件2,用于接收DoWork方法执行过程中的情况

        private void backgroundWorker1_ProgressChanged(object sender ProgressChangedEventArgs e)
        {
            ////接收DoWork传送过来的数据并在界面上显示
            
          
            if (e.UserState.ToString() != ““)
            {
                progressBar1.Value = e.ProgressP

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3780  2013-03-26 13:28  backgroundworker3\backgroundworker3\backgroundworker3.csproj

     文件      11264  2013-03-26 14:45  backgroundworker3\backgroundworker3\bin\Debug\backgroundworker3.exe

     文件      28160  2013-03-26 14:45  backgroundworker3\backgroundworker3\bin\Debug\backgroundworker3.pdb

     文件      14328  2013-03-26 15:15  backgroundworker3\backgroundworker3\bin\Debug\backgroundworker3.vshost.exe

     文件        490  2007-07-21 01:33  backgroundworker3\backgroundworker3\bin\Debug\backgroundworker3.vshost.exe.manifest

     文件       5265  2013-03-26 14:45  backgroundworker3\backgroundworker3\Form1.cs

     文件       6195  2013-03-26 14:44  backgroundworker3\backgroundworker3\Form1.Designer.cs

     文件       6019  2013-03-26 14:44  backgroundworker3\backgroundworker3\Form1.resx

     文件        978  2013-03-26 15:15  backgroundworker3\backgroundworker3\obj\Debug\backgroundworker3.csproj.FileListAbsolute.txt

     文件        847  2013-03-26 14:44  backgroundworker3\backgroundworker3\obj\Debug\backgroundworker3.csproj.GenerateResource.Cache

     文件      11264  2013-03-26 14:45  backgroundworker3\backgroundworker3\obj\Debug\backgroundworker3.exe

     文件        180  2013-03-26 14:44  backgroundworker3\backgroundworker3\obj\Debug\backgroundworker3.Form1.resources

     文件      28160  2013-03-26 14:45  backgroundworker3\backgroundworker3\obj\Debug\backgroundworker3.pdb

     文件        180  2013-03-26 13:56  backgroundworker3\backgroundworker3\obj\Debug\backgroundworker3.Properties.Resources.resources

     文件        498  2013-03-26 13:17  backgroundworker3\backgroundworker3\Program.cs

     文件       1390  2013-03-26 13:17  backgroundworker3\backgroundworker3\Properties\AssemblyInfo.cs

     文件       2884  2013-03-26 13:17  backgroundworker3\backgroundworker3\Properties\Resources.Designer.cs

     文件       5612  2013-03-26 13:17  backgroundworker3\backgroundworker3\Properties\Resources.resx

     文件       1102  2013-03-26 13:17  backgroundworker3\backgroundworker3\Properties\Settings.Designer.cs

     文件        249  2013-03-26 13:17  backgroundworker3\backgroundworker3\Properties\Settings.settings

     文件        941  2013-03-26 13:17  backgroundworker3\backgroundworker3.sln

    ..A..H.     19456  2013-03-26 14:47  backgroundworker3\backgroundworker3.suo

     目录          0  2013-03-26 13:17  backgroundworker3\backgroundworker3\obj\Debug\TempPE

     目录          0  2013-03-26 13:56  backgroundworker3\backgroundworker3\bin\Debug

     目录          0  2013-03-26 14:45  backgroundworker3\backgroundworker3\obj\Debug

     目录          0  2013-03-26 13:17  backgroundworker3\backgroundworker3\bin

     目录          0  2013-03-26 13:17  backgroundworker3\backgroundworker3\obj

     目录          0  2013-03-26 13:17  backgroundworker3\backgroundworker3\Properties

     目录          0  2013-03-26 14:45  backgroundworker3\backgroundworker3

     目录          0  2013-03-26 13:17  backgroundworker3

............此处省略3个文件信息

评论

共有 条评论