[C#]Thread与委托实现定时刷新数据功能
2016-11-18 15:10
477 查看
用户需求:定时抓取ERP系统条码已扫描未审核单据
解决办法:
由于采用Timer控件会消耗系统资源,故采用线程处理。
由于线程调用方法不支持控件处理模式,故采用委托方法实现。
bool bStop; public DataTable dt = new DataTable(); public ScanedNotChecked_Frm() { InitializeComponent(); } private void ScanedNotChecked_Frm_Load(object sender, EventArgs e) { //定义线程 Thread LogThread = new Thread(new ThreadStart(DoService)); //设置线程为后台线程,那样进程里就不会有未关闭的程序了 LogThread.IsBackground = true; bStop = true; if (bStop == true) { Control.PageControl.CheckForIllegalCrossThreadCalls = false; LogThread.Start();//起线程 } } private string GetList() { SqlParameter[] parms = new SqlParameter[0]; DBCon db = new DBCon("ZM"); gdScanedNotChecked.DataSource = SqlHelper.ExecuteDataset(db.StringConnection(), CommandType.StoredProcedure, "DZ_ScanedNotChecked", parms).Tables[0]; return "重载"; } int i = 0; private void DoService() { while (true) { bStop = false; //别的线程里的调用哇~ i++; lblMessage.Text = "第" + i.ToString() + "次" + returnList(returnMylist) + "数据"; System.Threading.Thread.Sleep(1000*60*5); } } private delegate string returnStrDelegate(); //搞个最简单滴取值滴方法~ private string returnMylist() { return GetList(); } //判断一下是不是该用Invoke滴~,不是就直接返回~ private string returnList(returnStrDelegate myDelegate) { if (this.InvokeRequired) { return (string)this.Invoke(myDelegate); } else { return myDelegate(); } }
相关文章推荐
- [C#]Thread与委托实现定时刷新数据功能
- 21世纪网:利用meta实现定时刷新,清除缓存保证每次加载最新数据等功能
- EXTJS学习系列提高篇:第二篇(转载)作者殷良胜,结合EXT2.2+C#.net实现将数据导入Excel的功能
- C#使用XmlEDocument实现数据文件安全存储功能
- 如何使数据绑定的控件实现“上一条”、“下一条”、“第一条”和“最后一条”的功能?(WinForm, C#)
- xml学习(三)---利用xml文件实现数据岛功能(网页显示xml文件中的内容免C#代码操作xml文件)
- Ajax实现定时刷新,获取后台数据(实现技术ASP)
- jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
- C#使用XmlEDocument实现数据文件安全存储功能
- 【原创】ExtJs实现定时读取数据,动态加载数据,页面不刷新。Struts 2框架下JSON传值
- jquery实现的右下角窗口弹窗加定时刷新弹出功能
- 页面定时刷新功能实现
- asp.net用xmlhttp实现无刷新定时读取后台数据
- Ajax无刷新实现定时更新数据
- c#直接调用ssis包实现Sql Server的数据导入功能
- 实现定时用ajax请求数据刷新报警数
- 如何在VS.NET/C# Builder开发的网页中也能实现DOS下录入数据回车换行的功能
- js实现定时自动刷新功能
- C# 将Excel数据导入到数据库(实现SQL2000企业管理器导入EXCEL功能)