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

用户需求:定时抓取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();
            }
        }

时间: 2024-11-10 02:12:11

[C#]Thread与委托实现定时刷新数据功能的相关文章

Angular 定时器$timeout和$interval关于定时刷新页面和发送请求的用法

项目中有用到定时器定时刷新页面的数据,在网上查看了一些资料,整理了一下,备忘. $timeout 用法如下:$timeout(fn,[delay],[invokeApply]); fn:一个将被延迟执行的函数. delay:延迟的时间(毫秒). invokeApply:如果设置为false,则跳过脏值检测,否则将调用$apply. 方法:cancel(promise); promise:$timeout函数的返回值. 具体使用:在项目中用到的其中一处是键入字符然后自动发送请求查询,如果每键入一个

Response_输出数据,实现文件下载,定时刷新页面,是否缓存,重定向,实现验证码

1.Response_输出数据 1.Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. ServletResponse -- 通用的response提供了一个响应应该具有最基本的属性和方法|-HttpServletResponse -- 在ServletResponse的基础上针对于HTTP协议增加了很多强化的属性和方法 2.HttpServletResponse对象封装了向客户端发送响应状态码.响应头.实体数

IOS刷新数据

在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介绍一个同时集成下拉刷新和上拉加载更多的类库EGOTableViewPullRefresh英文原文和类库下载地址:https://github.com/emreberge/EGOTableViewPullRefresh 附带 Demo效果 Whats different on this fork:容易

SQL实现类似于自动刷新数据的功能

原文:SQL实现类似于自动刷新数据的功能 有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像应用程序自动刷新的功能,可能是我还不知道有这样的功能,于是就写了一个类似自动刷新数据的脚本,需要手动中止程序的运行,当然也可能写个条件,自动结束语句的执行. 代码: 1 USE AdventureWorks2008R2 2 GO 3 4 WHILE 1=1

黑马day04 定时刷新&是否缓冲

定时刷新: //每隔一秒刷新 response.setIntHeader("Refresh", 1); response.setContentType("text/html;charset=utf-8"); response.getWriter().write("当前的时间"+new Date()); 告知浏览器不缓存数据.当使用验证码的时候就不缓存数据,为的是防止有的浏览器设置不一样.而有的就需要使用刷新,直接使用缓存中的数据,减少服务器的压力

如何让网页局部定时刷新?

如何逻辑整理? 1. 需要用到js的定时刷新函数  setInterval(function,time) 2. 只需要对网页中局部的标签进行刷新 函数中function为自定义函数,time是多久执行自定义函数,单位是毫秒 3. 可以通过定义自定义函数进行局部刷新,需要导入jquery 代码演示,如何? setInterval(function() { $("#history").load(location.href+" #history>*","&

Android 编程之天气预报下来刷新数据及城市容器配置--3

前面已经把活动和服务讲了讲,要注意的是服务的用法,我们在这里是 extends IntentService implements LocationListener ,下面看下 IntentService IntentService是一个通过Context.startService(Intent)启动可以处理异步请求的Service,使用时你只需要继承IntentService和重写其中的onHandleIntent(Intent)方法接收一个Intent对象,在适当的时候会停止自己(一般在工作完

jQuery实现AJAX定时刷新局部页面实例

本篇文章通过两种方法实例讲解ajax定时刷新局部页面,当然方法有很多种,也可以不使用ajax来刷新页面,可以使用jquery中的append来给指定内容加东西, 但是都不太实用,最实用的方法还是ajax加载数据了. 方法一: 局部刷新我们讲述到最多的是ajax 了,当然也可以不使用ajax来刷新页面了,我们可以使用jquery中的append来给指定内容加东西了,当然最实用的还是ajax加载数据了. 例子,定时局部刷新 定时局部刷新用到jQuery里面的setInterval方法,setInte

response常见应用、response细节、输出随机图片、定时刷新网页

response常见应用 向客户端输出中文数据 分别以OutputStream和PrintWriter输出 多学一招:使用HTML语言里面的<meta>标签来控制浏览器行为 思考:用OutputStream输出1,为什么用户看到的不是1? 文件下载和中文文件的下载 输出随机图片 package com.hbsi.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java