C#简单多线程Demo
2016-07-16 10:56
393 查看
一、简单描述需求:
1、后台每300ms查询数据库是否有新数据插入;
2、后台执行数据不影响UI操作;
二、界面显示及主要组件:
控件:Button——开启监测startWatch、停止监测stopWatch
TabControl——TabPage待发消息
DataGridView——dataGridViewMessage
BackgroundWorker——backgroundWorker
Timer——timerRefresh
三、主要代码
Demo代码下载:http://download.csdn.net/detail/wangcs017/9577599
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
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- UDP和多线程服务器