废话不多说,直接开始
添加引用
using System.ComponentModel
完整代码
using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient; // 引入SqlClient命名空间以使用ADO.NET public partial class YourForm : Form
{ private BackgroundWorker backgroundWorker; public YourForm() { InitializeComponent(); backgroundWorker = new BackgroundWorker(); backgroundWorker.WorkerReportsProgress = true; // 如果你不需要报告进度,可以设置为false backgroundWorker.DoWork += BackgroundWorker_DoWork; //task开始执行方法backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(DW_Change_Progress);//进度汇报事件backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted; //task结束事件} private void StartButton_Click(object sender, EventArgs e) { List<string> param= new List<string>(){"back_work_intput_parameter"};if (!backgroundWorker.IsBusy) { // 在开始工作之前,可以禁用UI元素以防止用户进行其他操作 StartButton.Enabled = false; backgroundWorker.RunWorkerAsync(param); // 启动后台工作 } } private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { List<string> param = (List<string>)e.Argument;//获取入参if (param.Count < 1) return;// 这个方法将在后台线程上执行 try { using (SqlConnection connection = new SqlConnection(YourConnectionString)) // 替换为你的连接字符串 { connection.Open(); using (SqlCommand command = new SqlCommand("SELECT * FROM YourTable", connection)) // 替换为你的SQL查询和表名 { using (SqlDataReader reader = command.ExecuteReader()) { DataTable dataTable = new DataTable(); dataTable.Load(reader); // 将DataTable作为结果传递给RunWorkerCompleted事件处理程序 e.Result = dataTable; } } } } catch (Exception ex) { // 将异常传递给RunWorkerCompleted事件处理程序 e.Result = ex; } } public void DW_Change_Progress(object sender, ProgressChangedEventArgs e){Progress.Value = (float)e.ProgressPercentage / (float)db_name_list.Count; }private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // 这个方法将在UI线程上执行,当DoWork完成时 if (e.Error != null) { // 处理异常 MessageBox.Show(e.Error.Message); } else { // 获取并处理数据 DataTable dataTable = e.Result as DataTable; if (dataTable != null) { // 更新UI,例如将数据绑定到DataGridView等控件上 yourDataGridView.DataSource = dataTable; } } finally { // 重新启用UI元素 StartButton.Enabled = true; } }
}