当前位置:网站首页>Écrire un programme winform en utilisant plusieurs threads

Écrire un programme winform en utilisant plusieurs threads

2022-01-15 02:09:58 La lave de Rodinia

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SQLThreading
{
    
    public partial class FrmThreadDataBase : Form
    {
    
        public FrmThreadDataBase()
        {
    
            InitializeComponent();
        }

        private void btnExecute1_Click(object sender, EventArgs e)
        {
    
            Thread th1 = new Thread(() =>
            {
    
                Thread.Sleep(2000);
                string classCount = Helper.GetSingleResult("select count(*) from StudentClass").ToString();
                this.lblResult1.Invoke(new Action<string>(t => {
     this.lblResult1.Text = t; }),classCount);
            });
            th1.IsBackground = true;
            th1.Start();
        }

        private void btnExecute2_Click(object sender, EventArgs e)
        {
    
            Thread th2 = new Thread(() =>
            {
    
                Thread.Sleep(2000);
                string stuCount = Helper.GetSingleResult("select count(*) from Students").ToString();
                this.lblResult2.Invoke(new Action<string>(t => {
     this.lblResult2.Text = t; }), stuCount);
            });
            th2.IsBackground = true;
            th2.Start();
        }

        private void btnGetData_Click(object sender, EventArgs e)
        {
    
            Thread th3 = new Thread(() =>
            {
    
                Thread.Sleep(2000);
                //string stuCount = Helper.GetSingleResult("select count(*) from Students").ToString();
                //this.lblResult2.Invoke(new Action<string>(t => { this.lblResult2.Text = t; }), stuCount);

                //Accès à la base de données, Visites simultanées2Tableaux, Séparer par un point - virgule Select Sélectionné plus tard, Est le nom de colonne à afficher
                //Invoke Peut être utilisé à travers les fils. Action Délégué générique sans valeur de retour
                //sleep, Retard, Vous pouvez voir le processus
                //dgvLier la source de données
                //Attention!DataSet, DataTable, DataRow, DataColoumnLa relation entre 
                DataSet ds = Helper.GetDataSet("Select * from StudentClass;select StudentName,Gender,PhoneNumber from Students") ;
                DataTable dt1 = ds.Tables[0];
                DataTable dt2 = ds.Tables[1];

                this.dgv1.Invoke(new Action<DataTable>(c =>
                {
    
                    this.dgv1.DataSource = c;
                }),dt1);
                Thread.Sleep(2000);
                this.dgv2.Invoke(new Action<DataTable>(s=>this.dgv2.DataSource=s),dt2);

            });
            th3.IsBackground = true;
            th3.Start();
        }
    }
}

版权声明
本文为[La lave de Rodinia]所创,转载请带上原文链接,感谢
https://chowdera.com/2022/01/202201080558307328.html

随机推荐