c#中BackGroundWorker控件

一、BackGroundWorker工作步骤

1.向窗体中拖入一个BackGroundWorker控件。

2.在某个方法或者事件中,调用BackGroundWorker的RunWorkerAsync()方法。

3.该方法为异步操作,将自动引发BackGroundWorker的DoWork事件。

4.调用ReportProgress方法将引发ProgressChanged事件。

二、一个使用了BackGroundWorker的例子

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Threading;
using System.Data.SqlClient;


//该用例需要一个名为bgwTestDB的Sql Server数据库
//数据库中应包含tbBgwTest表。
//表中有data1、data2两列。
//数据库中还需要一个存储过程,sql语句如下:
/***************
create procedure insertOneData
@data1 nchar(10),
@data2 int
as
insert into tbBgwTest (data1,data2) values (@data1, @data2)
********************/

 

 

namespace winBackgroundWorkerTest
{
    public partial class backgroundWorkerTest : Form
    {
        int count = 30;

        public backgroundWorkerTest()
        {
            InitializeComponent();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            //1.调用bgwInsertData的RunWorkerAsync方法,用来引发DoWork事件
            bgwInsertData.RunWorkerAsync(count);
        }

        private void bgwInsertData_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            //2.在DoWork中调用自定义函数,并将引发DoWork事件的sender传递出去
            insertData(worker);
        }

        private void bgwInsertData_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

        //自定义函数 insertData()
        private void insertData(BackgroundWorker worker)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=bgwTestDB;Integrated Security=True");

            SqlCommand cmd = new SqlCommand("insertOneData", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("data1", SqlDbType.NChar, 10);
            cmd.Parameters.Add("data2", SqlDbType.Int);

            for (int i = 0; i < count; i++)
            {
                try
                {
                    conn.Open();
                    cmd.Parameters["data1"].Value = i + 1;
                    cmd.Parameters["data2"].Value = i + 1;
                    cmd.ExecuteNonQuery();

                    //3.调用worker的ReportProgress函数,用来引发事件ProgressChanged
                    worker.ReportProgress(i, worker);
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                        conn.Close();
                }

                Thread.Sleep(50);
            }
        }

        private void bgwInsertData_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            else if (e.Cancelled)
            {
                MessageBox.Show("取消操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            else
                MessageBox.Show("操作成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vst3插件_Steinberg发布新的VST 3.7 SDK,音乐软件开发者速来围观

Steinberg日前宣布最新的VST SDK&#xff08;软件开发工具包&#xff09;即将面市。最新的VST 3.7引入了多项SDK接口增强功能&#xff0c;使VST3宿主和插件之间的集成达到了新的水平&#xff0c;还包括新的VST3项目生成器、改进的文档以及对MIDI 2.0的支持&#xff0c;还可以开…

linux脚本启三个tomcat,linux 重写Tomcat启停脚本

#!/bin/bash## description: Tomcat start/stop/status script#Location of JAVA_HOMEexport JAVA_HOME/opt/extp/tpc/jdk1.7 # 根据情况更改自己的jdk地址#Add Java binary files to PATHexport PATH$JAVA_HOME/bin:$PATH#CATALINA_HOME is the location of the configuration…

GitHub 2017 年度报告,最受欢迎的编程语言是?

GitHub 每年都会在年度盛会中推出数据报告&#xff0c;其中列出了一些年度的数据&#xff0c;包括其网站中最受欢迎的编程语言、开源项目等。今年的数据更是让人眼前一亮&#xff0c;Python 这匹编程语言中的黑马&#xff0c;势不可挡&#xff01; 编程语言之间的战争就是一场持…

python except用法和作用_121个问题答对80%那么恭喜你,Python的高薪工作迟早有你一份...

1. Python和Java、PHP、C、C#、C等其他语言的对比&#xff1f;2. 简述解释型和编译型编程语言&#xff1f;3. 代码中要修改不可变数据会出现什么问题? 抛出什么异4. print 调用 Python 中底层的什么方法?5. 简述你对 input()函数的理解?6. Python解释器种类以及特点&#xf…

相对论基础的谬误

《广义时空论•像说》附录之五      相对论是相对正确的&#xff0c;因为这个世界能最快描绘一个物体表征的手段是光&#xff0c;即光是标尺。  当物体速度小于光速时&#xff0c;通过对物体发出来的光的探测&#xff0c;可以得出物体的速度表征&#xff0c;及物体的一…

word2vec原理_word2vec论文阅读笔记

word2vec算是NLP中的经典算法&#xff0c;之前在课程中简单的学过&#xff0c;但面试时经不起深问。痛定思痛&#xff0c;参考Jack&#xff08;没搜出来&#xff09;的总结&#xff0c;笔者重点阅读了Mikolov的原始论文[1]和Xin Rong的详细推导[2]。Jack&#xff1a;word2vec 相…

GraphQL:来来来,Union

Union就是把不相干的一些数据实体&#xff0c;合并起来&#xff0c;一起供外部查询。不用像webapi&#xff0c;完成查询不同的数据&#xff0c;需要多次请求。一次请求&#xff0c;获取多样数据&#xff0c;减少请求次数&#xff0c;这也是GraphQL的优势之一。怎么弄&#xff0…

每个程序员都应该知道的基础数论

这篇文章讨论了数论中每个程序员都应该知道的几个重要概念。本文的内容既不是对数论的入门介绍&#xff0c;也不是针对数论中任何特定算法的讨论&#xff0c;而只是想要做为数论的一篇参考。如果读者想要获取关于数论的更多细节&#xff0c;文中也提供了一些外部的参考文献&…

powerbi视觉对象_玩转Power BI的图片可视化

​制作可视化报告时&#xff0c;为了展示效果&#xff0c;有时候需要用图片来展示&#xff0c;在 Power BI 中&#xff0c;关于图片的自定义视觉对象主要有下面三个&#xff0c;利用他们可以很轻松的进行图片可视化。下面来看看这些视觉对象的效果。样本数据如下&#xff1a;为…

.gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...

今天来了解一下linux里面的一些小知识&#xff1a;(一)Linux系统中最大可以起多少个进程&#xff1f;(1)32位系统中最多可以起32768个进程(2)64位系统中最多可以起2的22次方(4194304)约420万个如何查看linux系统默认的最大进程数&#xff0c;这里以centos7(x64)作为例子:[roote…

东南大学计算机网络_东南大学,2020年东南大学高考录取分数线分析

各位读者大家好&#xff0c;今天给大家介绍的是南京重点大学—东南大学。小编一直从事高等教育领域的写作&#xff0c;感兴趣的读者可以关注一下小编~1.学校基础东南大学&#xff0c;简称“东大”&#xff0c;是中华人民共和国教育部直属、中央直管副部级建制的全国重点大学&am…

Goodbye 2020,Welcome 2021 | 沉淀 2021

引言2021年&#xff0c;已开启二月的篇章&#xff0c;农历新年也张灯结彩而来&#xff0c;只不过要留守过年。在这辞旧迎新之际&#xff0c;踏入而立之年之时&#xff0c;正是算账的好时候&#xff0c;数一数今年的成长&#xff0c;讲一讲来年的期望&#xff0c;最重要的还是要…

试着翻译24小时自学SQL第四版

最近发现自己在SQL方面的功课学的很不到家,就饿补下了,就上网找了这本 Sams Teach Yourself SQL in 24Hours 这本书,感觉还是不错的而且都到第四版了,翻译了下目录感觉还是很值得学习的,悔不该在大三的时候没有好好的学好数据库啊,现在出来工作了感觉这方面是所有程序的基础,作…

python变量的作用_python 变量的作用范围

python 的变量作用域分三种 1: local 指当前作用域 通过locals() 能获取该命名空间的对象的dict 2:global 对应某个 .py 模块的作用域 通过globals() 能获取该命名空间的对象的dict 3:builtin 最顶层的作用域。 每次执行一个函数时&#xff0c; 就会创建新的局部命名空间。 解…

程序员必须知道的十大基础实用算法及其讲解

本文盘点程序员必须知道的十大基础实用算法及其讲解。 算法一&#xff1a;快速排序算法 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下&#xff0c;排序 n 个项目要Ο(nlogn) 次比较。在最坏状况下则需要Ο(n2) 次比较&#xff0c;但这种状况并不常见。事实上&#…

sql 日期和当前日期时间差_详解PostgreSQL 如何获取当前日期时间

概述开发数据库应用或者调试代码时&#xff0c;经常需要获取系统的当前日期和时间&#xff0c;今天主要看一下 PostgreSQL 中提供的相关函数。一、当前日期CURRENT_DATECURRENT_DATE 函数用于获取数据库服务器的当前日期&#xff1a;postgres# SELECT CURRENT_DATE;调用该函数时…

聊聊如何构建自驱团队(3)

聊聊如何构建自驱团队&#xff08;3&#xff09;“道“和”术“对于技术出生的管理者在进行问题思考时&#xff0c;总会深陷“术”和“道”两层维度问题的困扰&#xff1a;“道”就是平时大家提到的理论实践&#xff0c;而“术”则是与实际相匹配的一些方法。敏捷项目管理为构建…

linux c 数据库访问框架,linux c 开发通用结构,框架

了解其它语言的框架例&#xff1a;java Struts1、Struts2、Hibernate、Mybatis、Ibatis、Spring 等等&#xff0c;利用这些框架能够快速的开发出稳定的应用程序,在java中这些框架的功能主要提供一些浓缩版的功能。仔细思索&#xff1a;其它语言的通用结构&#xff1f;例&#x…

python list常用方法_Python中列表(List)的基本用法

一、列表的创建 list((3, 5, 7, 9, 11)) list(range(1, 10, 2)) """ 字符串、集合、字典的键、字典的键&#xff1a;值对转列表 """ list(hello, world) list({3, 7, 8}) list({a:3, b:9, c:78}) list({a:3, b:9, c:78}.items()) ""&q…

我们只知大势将至,却不知未来已来

❈ 凯文•凯利 《必然》&#xff1a; 未来的一切事物的生命都将是无穷尽的升级&#xff0c;而且迭代的速度不断的在加速。包括看得见的事物&#xff0c;也包括看不见的审美观和价值观。无论你使用一项工具的时间有多长&#xff0c;不断的升级都会把你变成一个菜鸟&#xff0c;从…