zoukankan      html  css  js  c++  java
  • BackgroundWorker 组件

    代码:

     static void Main(string[] args)
            {
                BackgroundWorker bw = new BackgroundWorker();
                bw.WorkerReportsProgress = true;
                bw.WorkerSupportsCancellation = true;
                bw.DoWork += Worker_doWork;
                bw.ProgressChanged += Worker_ProcessChanged;
                bw.RunWorkerCompleted += Worker_Completed;
                bw.RunWorkerAsync();
                Console.WriteLine("Press C to Cancel");
                do
                {
                    if (Console.ReadKey(true).KeyChar == 'C')
                    {
                        bw.CancelAsync();
                    }
                }
                while (bw.IsBusy);
            }
    
            static void Worker_doWork(object sender, DoWorkEventArgs e)
            {
                Console.WriteLine("当前线程ID:{0}", Thread.CurrentThread.ManagedThreadId);
                BackgroundWorker bw = (BackgroundWorker)sender;
                for (int i = 1; i <= 100; i++)
                {
                    if (bw.CancellationPending == true)
                    {
                        e.Cancel = true;
                        return;
                    }
                    if (i % 10 == 0)
                    {
                        bw.ReportProgress(i);
                    }
                    Thread.Sleep(TimeSpan.FromSeconds(0.1));
                }
                e.Result = 42;
            }
    
            static void Worker_ProcessChanged(object sender, ProgressChangedEventArgs e)
            {
                Console.WriteLine("%{0} is Completed. process thread pool thread id {1}", e.ProgressPercentage, Thread.CurrentThread.ManagedThreadId);
            }
            static void Worker_Completed(object sender, RunWorkerCompletedEventArgs e)
            {
                Console.WriteLine("完成的线程ID:{0}",Thread.CurrentThread.ManagedThreadId);
                if (e.Error != null)
                {
                    Console.WriteLine(e.Error.Message);
                }
                else if (e.Cancelled)
                {
                    Console.WriteLine("Operation has been canceled");
                }
                else
                {
                    Console.WriteLine("The Answer is {0}:",e.Result);
                }
            }
    View Code

    运行结果:

  • 相关阅读:
    【转】IOS开发:[1]Xcode5界面入门
    【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
    特征选择
    EM算法
    算法之美--3.2.3 KMP算法
    算法之美--3.2.2 MP算法
    图像质量评价方法PSNR+SSIM&&评估指标SROCC,PLCC
    C/C++二进制读写png文件
    大津法---OTSU算法
    一些优秀的面试笔试总结
  • 原文地址:https://www.cnblogs.com/sportdog/p/9548351.html
Copyright © 2011-2022 走看看