zoukankan      html  css  js  c++  java
  • BackgroundWorker使用方法

    在做GUI界面程序的时候,经常会遇到执行长时间方法的需求,当执行长时间方法的同时,再去点击界面,界面就会出现“卡死、假死”的现象,这是因为界面GUI线程被阻塞而导致暂时无响应。解决的方法有很多种,下面介绍C#组件BackgroundWorker的使用方法。

    //异步执行,避免界面卡死, BackgroundWorker对象
    private BackgroundWorker bw = new BackgroundWorker();
    
    bw.WorkerReportsProgress = true;
    //bw.WorkerSupportsCancellation = true;
    bw.DoWork += new DoWorkEventHandler(bw_DoWork);
    bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
    
    //执行长时间方法
    private void btnLongtime_Click(object sender, EventArgs e)
    {
        if (bw.IsBusy != true)
        {
            bw.RunWorkerAsync();
        }
    }
    
    /// <summary>
    /// BackgroundWorker执行的长时间方法
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void bw_DoWork(object sender, DoWorkEventArgs e)
    {
        for(int i = 0; i < 999999999; i++)
        {
        
        }
    
    }
    
    /// <summary>
    /// 事件执行完成的回调方法
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        MessageBox.Show("执行完毕", "对话框");
        
    }

    参考

    [1]:How to: Use a Background Worker

  • 相关阅读:
    JDK内置工具使用
    awk 数组
    c++面试题
    C++内存分配
    awk 数字比较
    awk脚本 排序
    awk 读取 shell 变量的方法
    NVelocity系列:Getting Start With NVelocity
    Castle.ActiveRecord分页示例
    NVelocity系列:NVelocity配置详解
  • 原文地址:https://www.cnblogs.com/fanyong/p/3518156.html
Copyright © 2011-2022 走看看