-
大小: 41KB文件類型: .rar金幣: 2下載: 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個文件信息
評論
共有 條評論