• 大小: 815KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2024-03-03
  • 语言: C#
  • 标签: 异步处理  

资源简介

C#异步操作 异步查询数据库 异步处理一行一行加载数据

资源截图

代码片段和文件信息

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

namespace WindowsFormsApplication1
{
    public  class AsynchronousQuery
    {

        private System.ComponentModel.BackgroundWorker backgroundWorker;
        public AsynchronousQuery()
        {
           
        }

        /// 
        /// 开始线程
        /// 

        public void InitAsynchronous(string strSql)
        {
            backgroundWorker = new BackgroundWorker();

            //指定提供进度通知  
            backgroundWorker.WorkerReportsProgress = true;

            //提供中断功能  
            backgroundWorker.WorkerSupportsCancellation = true;

            //线程的主要功能是处理事件  
            //开启线程执行工作  ,C#进度条实现之异步实例
            backgroundWorker.DoWork += new DoWorkEventHandler(BackgroundWorker_DoWork);

            //指定使用的功能来处理进度 
            backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(BackgroundWorker_ProgressChanged);

            //进度条结束完成工作 
            //1.工作完成  
            //2.工作错误异常  
            //3.取消工作 
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackgroundWorker_RunWorkerCompleted);

            //如果进度条需要参数 
            //调用System.ComponentModel.BackgroundWorker.RunWorkerAsync  
            //传入你的参数至System.ComponentModel.BackgroundWorker.DoWork  
            //提取参数 
            //System.ComponentModel.DoWorkEventArgs.Argument   
            //1.调用bgwInsertData的RunWorkerAsync方法,用来引发DoWork事件
            backgroundWorker.RunWorkerAsync(strSql);
        }
        /// 
        /// 操作开始时在另一个线程上运行的事件处理程序
        /// 

        private void BackgroundWorker_DoWork(object sender DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            //2.在DoWork中调用自定义函数,并将引发DoWork事件的sender传递出去

            DataTable dt = Query(e.Argument as string).Tables[0];
            int countt = dt.Rows.Count;
            if (countt > 0)
            {
               
                    if (worker.CancellationPending)
                    {
                        e.Cancel = true;
                        return;
                    }
                    else
                    {
                        //传递给ProgressChanged中数据
                        
                        worker.ReportProgress(100 dt);
                       
                    }
                
            }


        }
        /// 
        /// 当辅助线程指示某些操作已经运行时引发
        /// 

        private void BackgroundWorker_ProgressChanged(object sender ProgressChangedEventArgs e)
        {
            // DoWork中 worker.ReportProgress((i + 1) * (100 / countt) dt.Rows[i].ItemArray); 
            // 第一个参数是e.ProgressPercentage  进度
          

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5947  2011-07-01 15:49  异步操作\WindowsFormsApplication1\AsynchronousQuery.cs

     文件       3754  2011-07-01 15:49  异步操作\WindowsFormsApplication1\AsynchronousQuery1.cs

     文件       1209  2011-07-01 14:37  异步操作\WindowsFormsApplication1\AsynchronousQuery1.Designer.cs

     文件    2469888  2007-06-02 16:15  异步操作\WindowsFormsApplication1\bin\Debug\DevComponents.DotNetBar2.dll

     文件      23040  2011-07-01 16:39  异步操作\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

     文件      71168  2011-07-01 16:39  异步操作\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.pdb

     文件      14328  2011-07-01 17:09  异步操作\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.vshost.exe

     文件        490  2007-07-21 01:33  异步操作\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.vshost.exe.manifest

     文件       2253  2011-07-01 09:46  异步操作\WindowsFormsApplication1\Form1.cs

     文件       1983  2011-07-01 09:46  异步操作\WindowsFormsApplication1\Form1.Designer.cs

     文件       5814  2011-07-01 09:46  异步操作\WindowsFormsApplication1\Form1.resx

     文件        737  2011-07-01 11:00  异步操作\WindowsFormsApplication1\Form2.cs

     文件       2082  2011-07-01 11:00  异步操作\WindowsFormsApplication1\Form2.Designer.cs

     文件       6019  2011-07-01 11:00  异步操作\WindowsFormsApplication1\Form2.resx

     文件       7388  2011-07-01 15:54  异步操作\WindowsFormsApplication1\Form3.cs

     文件       4854  2011-07-01 14:21  异步操作\WindowsFormsApplication1\Form3.Designer.cs

     文件       5814  2011-07-01 14:19  异步操作\WindowsFormsApplication1\Form3.resx

     文件       1243  2011-07-01 16:40  异步操作\WindowsFormsApplication1\Form4.cs

     文件       4861  2011-07-01 15:57  异步操作\WindowsFormsApplication1\Form4.Designer.cs

     文件       5814  2011-07-01 15:57  异步操作\WindowsFormsApplication1\Form4.resx

     文件       5428  2011-07-01 13:28  异步操作\WindowsFormsApplication1\MainForm.cs

     文件       6088  2011-07-01 13:28  异步操作\WindowsFormsApplication1\MainForm.Designer.cs

     文件       5814  2011-07-01 13:28  异步操作\WindowsFormsApplication1\MainForm.resx

     文件       5702  2011-07-01 10:01  异步操作\WindowsFormsApplication1\obj\Debug\ResolveAssemblyReference.cache

     文件        180  2011-07-01 15:24  异步操作\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.backgroundWorkerTest.resources

     文件       1921  2011-07-01 17:09  异步操作\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.csproj.FileListAbsolute.txt

     文件       1089  2011-07-01 15:57  异步操作\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.csproj.GenerateResource.Cache

     文件      23040  2011-07-01 16:39  异步操作\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.exe

     文件        180  2011-07-01 15:24  异步操作\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.Form2.resources

     文件        180  2011-07-01 15:57  异步操作\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.Form4.resources

............此处省略29个文件信息

评论

共有 条评论

相关资源