BackgroundWorker例子

来源:互联网 发布:全球大数据公司排名 编辑:程序博客网 时间:2024/05/16 10:17
using System.ComponentModel;using System.IO;namespace BackgroundWorkerDemo{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            //“執行背景程序”按鈕事件            btnRun.Click += new EventHandler(btnRun_Click);            //“取消背景程序”按鈕事件            btnCancel.Click += new EventHandler(btnCancel_Click);            //是否允許BackgroundWorker 能否报告进度            bgwWorker.WorkerReportsProgress = true;            //選擇文件按鈕方法            btnSelectFile.Click += new EventHandler(btnSelectFile_Click);            //5.2            //开始执行后台操作時            //当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数;            bgwWorker.DoWork += new DoWorkEventHandler(bgwWorker_DoWork);            //引发 ProgressChanged 事件。 ProgressChanged是负责报告当前程序进度            bgwWorker.ProgressChanged += new ProgressChangedEventHandler(bgwWorker_ProgressChanged);            //当后台操作已完成、被取消或引发异常时发生。            bgwWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgwWorker_RunWorkerCompleted);                          }        /// <summary>        /// 被選擇的文件        /// </summary>        string sFile = "";        /// <summary>        /// ProgressBar的值        /// </summary>        int iProgressValue = 1;        String fs_filename = "";        /// <summary>        /// 得到轉換后文件在服務器的絕對路徑        /// </summary>        String fs_convertedfilename = "";        /// <summary>        /// 得到選項選擇的結果(0為瀏覽)        /// </summary>        int interfaceOptions = 0;        /// <summary>        /// 選擇文件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void btnSelectFile_Click(object sender, EventArgs e)        {            //選擇文件            OpenFileDialog ofdDialog = new OpenFileDialog();              if (ofdDialog.ShowDialog()==DialogResult.OK)            {                sFile = ofdDialog.FileName;                           string sFilePathName = Path.GetDirectoryName(sFile) +"\\"+ Path.GetFileNameWithoutExtension(sFile);                txtSelect.Text = sFile;                fs_filename = sFile;                                //得到轉換后的文件名                fs_convertedfilename = sFilePathName + ".swf";            }        }        /// <summary>        /// “執行背景程序”按鈕事件的方法        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void btnRun_Click(object sender, EventArgs e)        {            string sFile = "";            //开始执行任务,會触发DoWork事件            bgwWorker.RunWorkerAsync(sFile);        }        /// <summary>        /// “取消背景程序”按鈕事件的方法        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void btnCancel_Click(object sender, EventArgs e)        {            if (bgwWorker.IsBusy)            {                //取消操作                bgwWorker.CancelAsync();                txtResult.Text += "已取消";            }        }         /// <summary>        /// 开始执行后台操作時        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void bgwWorker_DoWork(object sender, DoWorkEventArgs e)        {            BackgroundWorker bgwValue = (BackgroundWorker)sender;            //報告進度(進度值需自己傳入)            bgwWorker.ReportProgress(iProgressValue);             //5.3             //運行需要運行的方法。             RunPrint2Falsh();            if ( RunPrint2Falsh()==true)            {                bgwWorker.ReportProgress(100);            }        }          /// <summary>        /// 背景程序进度方法        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void bgwWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)        {            //5.4            //設置ProgressBar設            pgbValue.Value = e.ProgressPercentage;          }        /// <summary>        /// 背景程序運行完成事件方法        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void bgwWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)        {            //5.5            txtResult.Text += "完成!";                    }        /// <summary>        /// 運行將文件轉換成Flash程序(此處引用了Print2Flash控件)        /// </summary>        /// <returns></returns>        private bool RunPrint2Falsh()        {            bool sRetrun = false;            try            {                P2F.Server2 p2fServer = new P2F.Server2();                p2fServer.DefaultProfile.InterfaceOptions = interfaceOptions;                p2fServer.ConvertFile(fs_filename, fs_convertedfilename, null, null, null);                sRetrun = true;            }            catch (Exception ex)            {                                throw ex;            }            return sRetrun;        }    }}


原创粉丝点击