zoukankan      html  css  js  c++  java
  • BackGroundWorker学习

    代码
     public partial class FrmBackGroundWorker : Form
        {
            
    public FrmBackGroundWorker()
            {
                InitializeComponent();
            }

            
    private void startBtn_Click(object sender, EventArgs e)
            {
                
    this.backgroundWorker1.RunWorkerAsync(2000);
            }

            
    private void cancelBtn_Click(object sender, EventArgs e)
            {
                
    this.backgroundWorker1.CancelAsync();
            }

            
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                BackgroundWorker bw 
    = sender as BackgroundWorker;

                
    int arg = (int)e.Argument;

                e.Result 
    = TimeConsumingOperation(bw, arg);

                
    if (bw.CancellationPending)
                {
                    e.Cancel 
    = true;
                }
            }

            
    private int TimeConsumingOperation(BackgroundWorker bw, int sleepPeriod)
            {
                
    int result = 0;

                Random rand 
    = new Random();

                
    while (!this.backgroundWorker1.CancellationPending)
                {

                    
    bool exit = false;

                    
    switch (rand.Next(3))
                    {
                        
    case 0:
                            {
                                
    //result = 1;

                                
    //exit = true;

                                
    //break;

                                
    throw new Exception("An   error   condition   occurred.");
                            }
                        
    case 1:
                            System.Threading.Thread.Sleep(sleepPeriod);
                            exit 
    = true;
                            
    break;
                        
    case 2:
                            {
                                result 
    = 23;
                                exit 
    = true;
                                
    break;
                            }
                        
    default:
                            {
                    
                                
    break; }
                    
                    }
                    
    if (exit)
                    {
                        bw.ReportProgress(
    100100);
                        
    break; }
                
                
                }

                
    return result;
            
            
            }

            
    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                
    if (e.Cancelled)
                {
                    MessageBox.Show(
    "");

                }
                
    else if (e.Error != null)
                {
                    
    string msg = String.Format("as {0}", e.Error.Message);

                    MessageBox.Show(
    "");

                }
                
    else
                {
                    
    string msg = String.Format("Result   =   {0} ", e.Result);
                    MessageBox.Show(msg); 

                }
            }

            
    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
            {
                
    //this.toolStripProgressBar1.Value = Math.Min(this.toolStripProgressBar1.Maximum, e.ProgressPercentage);

                
    this.progressBar1.Value = Math.Min(this.progressBar1.Maximum, e.ProgressPercentage);
            }
        }

     http://www.cnblogs.com/dlwang2002/archive/2006/12/07/585093.html

    http://www.cnblogs.com/idior/archive/2005/07/25/199946.html .net新线程

    http://www.cnblogs.com/yizhu2000/archive/2007/10/19/929930.html多线程总结

    http://www.cnblogs.com/happy555/archive/2007/11/07/952315.html BackGroundWorker使用经验

    http://www.cnblogs.com/artech/archive/2008/07/30/1256144.html 一个BackGroundWorker实现WinForm异步操作的例子

  • 相关阅读:
    「Android」Android4.04 在线源代码查看
    「Android」Huawei U8825d new LowmemoryKiller config
    「Linux」Ubuntu12.10的Libpcap1.3安装过程
    NSString+NSMutableString+NSValue+NSAraay用法汇总
    hd2 刷android
    EXT分区教程
    how to use a Class Breaks Renderer in the ESRI ArcGIS iPhone API to display cities of varying population with different
    windows server 2008修改远程桌面连接数
    iphone开发常用代码
    手持GPS坐标系统的转换与应用
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1676023.html
Copyright © 2011-2022 走看看