C#BackgroundWorker的使用.doc_第1页
C#BackgroundWorker的使用.doc_第2页
C#BackgroundWorker的使用.doc_第3页
C#BackgroundWorker的使用.doc_第4页
C#BackgroundWorker的使用.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在使用之前先了解一些知識。1、BackgroundWorker作用: 主要用在單獨的線程上執行操作。BackgroundWorker类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面(UI)似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题。2、BackgroundWorker常用屬性:名稱說明CancellationPending指示應用程式是否已請求取消後台操作即(是否正在停止中)。IsBusy獲取一個值,指示 BackgroundWorker 是否正在運行非同步操作。WorkerReportsProgress該值指示 BackgroundWorker 能否報告進度更新。WorkerSupportsCancellation該值指示 BackgroundWorker 是否支援非同步取消。3、BackgroundWorker常用事件:控制項名稱說明TextBoxtxtSelect用於顯示被選擇文件的路徑ButtonbtnSelectFile用於選擇文件TextBoxtxtResult用於顯示後台程式執行的結果ProgressBarpgbValue用於顯示背景程式執行的結果ButtonbtnRun用於執行背景程式ButtonbtnCancel用於取消正在執行的背景程式BackgroundWorkerbgwWorker用於後台運行程式4、注意: 運行RunWorkerAsync()方法會觸發DoWork事件 運行ReportProgress()方法會觸發ProgressChanged事件5、使用過程: 5.1 在窗體中加入控件5.2 加入BackgroundWorker的事件5.3 在DoWork事件的方法中調用需要執行的方法5.4 在ProgressChanged事件的方法中顯示進度5.5 在RunWorkerCompleted事件的方法中顯示被執行方法的結果6、代碼: 6.1 代碼中的控件說明:控件名稱說明TextBoxtxtSelect用於顯示被選擇文件的路徑ButtonbtnSelectFile用於選擇文件TextBoxtxtResult用於顯示後台程序執行的結果ProgressBarpgbValue用於顯示背景程序執行的結果ButtonbtnRun用於執行背景程序ButtonbtnCancel用於取消正在執行的背景程序 6.2代碼(下面代碼作用是將文件轉成swf):usingSystem.ComponentModel;usingSystem.IO;namespaceBackgroundWorkerDemopublicpartialclassForm1:FormpublicForm1()InitializeComponent();/“執行背景程序”按鈕事件btnRun.Click+=newEventHandler(btnRun_Click);/“取消背景程序”按鈕事件btnCancel.Click+=newEventHandler(btnCancel_Click);/是否允許BackgroundWorker能否报告进度bgwWorker.WorkerReportsProgress=true;/選擇文件按鈕方法btnSelectFile.Click+=newEventHandler(btnSelectFile_Click);/5.2 /开始执行后台操作時/当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数;bgwWorker.DoWork+=newDoWorkEventHandler(bgwWorker_DoWork);/引发ProgressChanged事件。ProgressChanged是负责报告当前程序进度bgwWorker.ProgressChanged+=newProgressChangedEventHandler(bgwWorker_ProgressChanged);/当后台操作已完成、被取消或引发异常时发生。bgwWorker.RunWorkerCompleted+=newRunWorkerCompletedEventHandler(bgwWorker_RunWorkerCompleted); /被選擇的文件/stringsFile=;/ProgressBar的值/intiProgressValue=1;Stringfs_filename=;/得到轉換后文件在服務器的絕對路徑/Stringfs_convertedfilename=;/得到選項選擇的結果(0為瀏覽)/intinterfaceOptions=0;/選擇文件/voidbtnSelectFile_Click(objectsender,EventArgse)/選擇文件OpenFileDialogofdDialog=newOpenFileDialog();if(ofdDialog.ShowDialog()=DialogResult.OK)sFile=ofdDialog.FileName;stringsFilePathName=Path.GetDirectoryName(sFile)+Path.GetFileNameWithoutExtension(sFile);txtSelect.Text=sFile;fs_filename=sFile;/得到轉換后的文件名fs_convertedfilename=sFilePathName+.swf;/“執行背景程序”按鈕事件的方法/voidbtnRun_Click(objectsender,EventArgse)stringsFile=;/开始执行任务,會触发DoWork事件bgwWorker.RunWorkerAsync(sFile);/“取消背景程序”按鈕事件的方法/voidbtnCancel_Click(objectsender,EventArgse)if(bgwWorker.IsBusy)/取消操作bgwWorker.CancelAsync();txtResult.Text+=已取消;/开始执行后台操作時/voidbgwWorker_DoWork(objectsender,DoWorkEventArgse)BackgroundWorkerbgwValue=(BackgroundWorker)sender;/報告進度(進度值需自己傳入)bgwWorker.ReportProgress(iProgressValue);/5.3 /運行需要運行的方法。RunPrint2Falsh();if(RunPrint2Falsh()=true)bgwWorker.ReportProgress(100);/背景程序进度方法/voidbgwWorker_ProgressChanged(objectsender,ProgressChangedEventArgse)/5.4 /設置ProgressBar設pgbValue.Value=e.ProgressPercentage;/背景程序運行完成事件方法/voidbgwWorker_RunWorkerCompleted(objectsender,RunWorkerCompletedEventArgse)/5.5txtResult.Text+=完成!;/運行將文件轉換成Flash程序(此處引用了Print2Flash控件)/privateboolRunPrint2Falsh()boolsRetrun=false;tryP2F.Server2p2fServer=newP2F.Server2();p2fServer.Def

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论