[winform]backgroundWorker

在進(jìn)行操作的時(shí)候,程序會(huì)進(jìn)入假死狀態(tài).數(shù)據(jù)少的時(shí)候還好,數(shù)據(jù)一多耗時(shí)過長很影響使用的體驗(yàn),所以使用backgroundWorker類,將與數(shù)據(jù)庫相關(guān)的耗時(shí)較長的操作放在Dowork事件處理程序中,進(jìn)行操作的時(shí)候,用戶也通過ProgressChanged和RunWorkerCompleted事件與用戶界面進(jìn)行通信。

  1. 從工具箱拖取backgroundWorker組件
  2. 在button的click事件加入RunWorkerAsync
        private void button3_Click(object sender, EventArgs e)
        {
            OracleConnection conn = OracleConn(PublicValue.str);
            //調(diào)用backgroundWorker1的RunWorkerAsync方法,用來引發(fā)DoWork事件
            backgroundWorker1.RunWorkerAsync(PublicValue.FilePath1);
  1. 編輯DoWork事件代碼
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            //e.Argument為RunWorkerAsync(arg);對應(yīng)的參數(shù)
            BackgroundWorker bw = (BackgroundWorker)sender;
            String path = e.Argument.ToString();
            工作代碼
        }
  1. 編輯ProgressChanged事件代碼
  2. 編輯RunWorkerCompleted事件代碼
//必須放在Form里否則無法調(diào)取
 public Form1()
        {
            InitializeComponent();
            //工作線程回調(diào),將要執(zhí)行的代碼放在此函數(shù)里
            this.backgroundWorker1.DoWork += backgroundWorker1_DoWork;
            //當(dāng)進(jìn)度改變時(shí)回調(diào)
            this.backgroundWorker1.ProgressChanged += backgroundWorker1_ProgressChanged;
            //當(dāng)完成時(shí)回調(diào)
            this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
            //此屬性必須設(shè)置,否則讀取不到進(jìn)度
            this.backgroundWorker1.WorkerReportsProgress = true;
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,619評論 1 32
  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,678評論 1 11
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,753評論 11 349
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,273評論 2 89
  • 永遠(yuǎn)沒有不可能 生活中總有一些人,對未來并不主動(dòng)。 這類人,不是在動(dòng)蕩的日子里顛簸得太久,就是...
    大道行者_(dá)閱讀 260評論 0 0

友情鏈接更多精彩內(nèi)容