BackgroundWorker使用总结

来源:互联网 发布:淘宝网二度春肾宝 编辑:程序博客网 时间:2024/06/05 07:48

   BackgroundWorker使用总结

要用Background,你必须Import System. ComponentModel 命名空间。

简单调用BackgroundWorker的过程

BackgroundWorker worker = new BackgroundWorker();

worker.DoWork+=new DoWorkEventHandler(worker_DoWork);

worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);

        ArgClass arg = new ArgClass();

        worker.RunWorkerAsync(arg);

                public class ArgClass

                {

       

                }

        static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

        {

                   //获得BackgroundWorker执行结果

            Console.WriteLine(e.Result);

        }

       -------------------------------------------------------

        public static void worker_DoWork(object sender, DoWorkEventArgs e)

        {

      //获得BackgroundWorker调用程序输入的参数

            Console.WriteLine((ArgClass)e.Argument);

 

 }

 

       你可以通过ArgClass的参数和 woker_Dowork交互信息。

你可以监视BackgroundWorker工作进度

// WorkerReportsProgress同时支持get,set

worker.WorkerReportsProgress =true

worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);

        static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)

        {

            Console.WriteLine(e.ProgressPercentage);

            Console.WriteLine(e.UserState);

                 //添加BackgroundWorker状态改变后的操作

        }

 

        -------------------------------------------------------

        public static void worker_DoWork(object sender, DoWorkEventArgs e)

        {

                               

              //触发ProgressChanged事件

              worker.ReportProgress(15, "Stage1");  

  }

你可以在调用程序中告诉BackgroundWorker让它撤销操作

 // WorkerSupportsCancellation同时支持get,set

 worker.WorkerSupportsCancellation = true;

     worker.CancelAsync();

 

        -------------------------------------------------------

        public static void worker_DoWork(object sender, DoWorkEventArgs e)

        {

                               

   //可以通过CancellationPending得知调用程序是否请求退出

            if (worker.CancellationPending == true)

            {

                            //执行退出操作

                             //告诉调用者我已经退出成功

                                e.Cancel = true;

            }

               

 }

 

 

 

 

原创粉丝点击