您的位置:首页 > 编程语言 > C#

C#简单多线程Demo

2016-07-16 10:56 393 查看
一、简单描述需求:

1、后台每300ms查询数据库是否有新数据插入;

2、后台执行数据不影响UI操作;

二、界面显示及主要组件:

控件:Button——开启监测startWatch、停止监测stopWatch

         TabControl——TabPage待发消息

         DataGridView——dataGridViewMessage

         BackgroundWorker——backgroundWorker

         Timer——timerRefresh



三、主要代码

private string timeTick = ConfigurationManager.AppSettings["TimeTick"];
//开启监测
private void startWatch_Click(object sender, EventArgs e)
        {
            timerRefresh.Interval = Convert.ToInt32(timeTick);
            timerRefresh.Enabled = true;
            this.Text = "短信监测平台启用中...";
        }
//停止监测
private void stopWatch_Click(object sender, EventArgs e)
        {
            backgroundWorker.CancelAsync();
            timerRefresh.Enabled = false;
            this.Text = "短信监测平台未启用";
        }
//后台操作完成以后,无论是completed 还是cancelled,则RunWorkerCompleted 事件被触发,通过此方法可以将后台操作的完成结果反馈给用户
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            dataGridViewMessage.DataSource = dtSending;
            dataGridViewMessage.Columns[0].Width = 100;      //第一列的相对宽度为10%
            dataGridViewMessage.Columns[1].Width = 100;      //第二列的相对宽度为20%
            dataGridViewMessage.Columns[2].Width = 370;      //第三列的相对宽度为30%
            dataGridViewMessage.Columns[3].Width = 120;
            dataGridViewMessage.Columns[0].HeaderText = "主题";
            dataGridViewMessage.Columns[1].HeaderText = "接收人";
            dataGridViewMessage.Columns[2].HeaderText = "短信内容";
            dataGridViewMessage.Columns[3].HeaderText = "发送人";
            //MessageBox.Show("刷新完成");

        }
DataTable dtSending = new DataTable();
//后台执行代码,在另外一个线程执行
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
           //DoSomeThing
//给dtSending赋值 
DataBind();
        }
private void timerRefresh_Tick(object sender, EventArgs e)
        {
            try
            {
                backgroundWorker.RunWorkerAsync();
            }
            catch (Exception)
            {
                Thread.Sleep(3000);
            }

        }

Demo代码下载:http://download.csdn.net/detail/wangcs017/9577599
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 c#