码迷,mamicode.com
首页 > Windows程序 > 详细

[C#]Thread与委托实现定时刷新数据功能

时间:2016-11-18 16:11:15      阅读:429      评论:0      收藏:0      [点我收藏+]

标签:illegal   type   ddc   数据   tty   back   ade   parameter   control   

用户需求:定时抓取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与委托实现定时刷新数据功能

标签:illegal   type   ddc   数据   tty   back   ade   parameter   control   

原文地址:http://blog.csdn.net/david_520042/article/details/53216939

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!