线程+委托 查询数据库
来源:互联网 发布:十万元投资知乎 编辑:程序博客网 时间:2024/09/21 06:22
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.Threading;namespace WindowsApplication2{ public partial class Form1 : Form { private SqlConnection con; private SqlDataAdapter da; private DataTable dt; private delegate void tw(); private tw t; public Form1() { InitializeComponent(); t = new tw(getData); } private void button1_Click(object sender, EventArgs e) { con = new SqlConnection("server=.;database=pubs;uid=sa;pwd=**"); da = new SqlDataAdapter("select top 1 * from jobs order by job_id desc", con); System.Threading.Thread t = new Thread(new ThreadStart(StartThread)); t.IsBackground = true; t.Start(); } private void getData() { dt = new DataTable(); da.Fill(dt); textBox1.Text = dt.Rows[0][0].ToString(); textBox2.Text = dt.Rows[0][1].ToString(); textBox3.Text = dt.Rows[0][2].ToString(); textBox4.Text = dt.Rows[0][3].ToString(); } private void StartThread() { while (true) { this.Invoke(t, null);//因为界面对象只能有UI线程(通常为主线程)访问,其他线程只能通过线程间的操作来实现,也就是用委托来实现! Thread.Sleep(20000);//20秒 } } }}