• C# 隔一段时间自动刷新弹框(医院病人超时提醒)


    做一个简单的弹框提醒,这里需要用到线程,那什么是线程,我百度了一下,大概是这个意思:

      通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下:

        [ComVisibleAttribute(true)]

        public delegate void ThreadStart()

    我自己也不是特别懂,想了解的话建议直接百度。

    今天做的这个实例是:在数据库中有一张表,这张表只有四个字段,分别是id,name,state,time。代表着id,姓名,状态和时间。我需要做的就是当我打开这个窗体的时候,这张表的信息会显示出来,在这里会用时间作对比,用系统的时间减去表中的时间,超过五分钟就弹框说“谁谁谁超时了”,每隔十秒弹一次。感觉很简单的样子。下面进入写代码的时间,首先需要连接数据库,这个应该就不用详细说了吧。

    先定义一个全局变量,这个变量就是用来存储连接数据库语句的:

    string str = @"server=localhost;database=数据库名称;user id=sa;pwd=密码";

    在load里面就要写一个线程了,为什么需要写线程呢?我的原因是因为如果不写在线程里面,弹框就会在页面出现之前弹出来,显然是不符合道理的。并且我需要做自动刷新,在不关闭页面的情况下,在数据库中插入数据能够自动刷新上去。

       private void Form1_Load(object sender, EventArgs e)
            {
             Control.CheckForIllegalCrossThreadCalls
    = false;//获取或设置一个值,该值指示是否捕获对错误线程的调用,这些调用在调试应用程序时访问控件的 Handle 属性 Thread th = new Thread(new ThreadStart(() => { while (true) { try { SqlConnection con = new SqlConnection(str); con.Open();//打开数据库连接 string sql = "SELECT * FROM T_USER";//查询语句 SqlDataAdapter data = new SqlDataAdapter(sql, con); DataSet1 ds = new DataSet1(); data.Fill(ds); con.Close(); DataTable dt = ds.Tables[0];//把查询出来的数据放在内存中的数据表中 dataGridView1.DataSource = dt;//绑定数据 string s = ""; string name = ""; DateTime dtime; TimeSpan ts; for (int i = 0; i < dt.Rows.Count; i++) { s = dt.Rows[i][3].ToString();//循环找出每一行的时间 name = dt.Rows[i][0].ToString();//循环找出每一行对应的名字 dtime = Convert.ToDateTime(s);//获取到查出来的时间 ts = System.DateTime.Now - dtime;//用系统的时间减去表中的时间 if (ts.Minutes >= 5)//如果大于五分钟 { MessageBox.Show(name + "超时了");//弹框“谁谁谁超时了” } } } catch (Exception ex) { MessageBox.Show(ex.ToString());//异常 } finally { Thread.Sleep(10000);//每隔十秒自动刷新重新弹框 } } } ) ); //创建线程 th.IsBackground = true; th.Start(); //启动线程 } }
    Control.CheckForIllegalCrossThreadCalls = false;//这句话很关键,如果没有这句话,绑定数据源的时候就会出现异常。

    Thread th = new Thread(new ThreadStart(() =>{}));//创建线程
    好了,今天的内容就分享到这里了。
  • 相关阅读:
    Electron dialog 对话框的使用
    Electron BrowserView 的使用
    自动化测试相关
    使用chrome开发者工具中的performance面板解决性能瓶颈
    Electron window.open 函数 和 Browser-window-proxy 对象的使用
    Electron webview 标签
    Electron File对象
    Electron 进程
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/madan01/p/10556698.html
Copyright © 2020-2023  润新知