美文网首页
[winform]backgroundWorker

[winform]backgroundWorker

作者: 鱼语语 | 来源:发表于2019-01-17 16:11 被阅读0次

在进行操作的时候,程序会进入假死状态.数据少的时候还好,数据一多耗时过长很影响使用的体验,所以使用backgroundWorker类,将与数据库相关的耗时较长的操作放在Dowork事件处理程序中,进行操作的时候,用户也通过ProgressChanged和RunWorkerCompleted事件与用户界面进行通信。

  1. 从工具箱拖取backgroundWorker组件
  2. 在button的click事件加入RunWorkerAsync
        private void button3_Click(object sender, EventArgs e)
        {
            OracleConnection conn = OracleConn(PublicValue.str);
            //调用backgroundWorker1的RunWorkerAsync方法,用来引发DoWork事件
            backgroundWorker1.RunWorkerAsync(PublicValue.FilePath1);
  1. 编辑DoWork事件代码
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            //e.Argument为RunWorkerAsync(arg);对应的参数
            BackgroundWorker bw = (BackgroundWorker)sender;
            String path = e.Argument.ToString();
            工作代码
        }
  1. 编辑ProgressChanged事件代码
  2. 编辑RunWorkerCompleted事件代码
//必须放在Form里否则无法调取
 public Form1()
        {
            InitializeComponent();
            //工作线程回调,将要执行的代码放在此函数里
            this.backgroundWorker1.DoWork += backgroundWorker1_DoWork;
            //当进度改变时回调
            this.backgroundWorker1.ProgressChanged += backgroundWorker1_ProgressChanged;
            //当完成时回调
            this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
            //此属性必须设置,否则读取不到进度
            this.backgroundWorker1.WorkerReportsProgress = true;
        }

相关文章

网友评论

      本文标题:[winform]backgroundWorker

      本文链接:https://www.haomeiwen.com/subject/mbujdqtx.html