免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版
打開APP
未登錄
開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
C#中的BackgroundWorker控件
昵稱10504424
>《C#》
2012.09.12
關(guān)注
C#中的BackgroundWorker控件 Keywords: C# .NET BackgroundWorkerSource: http://txw1958.cnblogs.com/BackgroundWorker是.NET Framework 里用來執(zhí)行多線程任務(wù)的控件,它允許開發(fā)人員在一個(gè)單獨(dú)的線程上執(zhí)行一些操作。耗時(shí)的操作(如下載和數(shù)據(jù)庫事務(wù))在長時(shí)間運(yùn)行時(shí)可能會導(dǎo)致用戶界面 (UI) 始終處于停止響應(yīng)狀態(tài)。如果您需要能進(jìn)行響應(yīng)的用戶界面,而且面臨與這類操作相關(guān)的長時(shí)間延遲,則可以使用 BackgroundWorker 類方便地解決問題。若要在后臺執(zhí)行耗時(shí)的操作,請創(chuàng)建一個(gè) BackgroundWorker,偵聽那些報(bào)告操作進(jìn)度并在操作完成時(shí)發(fā)出信號的事件。 可以通過編程方式創(chuàng)建 BackgroundWorker,也可以將它從“工具箱”的“組件”選項(xiàng)卡中拖到窗體上。 如果在 Windows 窗體設(shè)計(jì)器中創(chuàng)建 BackgroundWorker,則它會出現(xiàn)在組件欄中,而且它的屬性會顯示在“屬性”窗口中。 語法public class BackgroundWorker : Component 構(gòu)造函數(shù) 名稱說明
BackgroundWorker初始化 BackgroundWorker 類的新實(shí)例。屬性 名稱說明
CancellationPending獲取一個(gè)值,指示應(yīng)用程序是否已請求取消后臺操作。
CanRaiseEvents獲取一個(gè)指示組件是否可以引發(fā)事件的值。 (繼承自 Component。)
Container獲取 IContainer,它包含 Component。 (繼承自 Component。)
DesignMode獲取一個(gè)值,用以指示 Component 當(dāng)前是否處于設(shè)計(jì)模式。 (繼承自 Component。)
Events獲取附加到此 Component 的事件處理程序的列表。 (繼承自 Component。)
IsBusy獲取一個(gè)值,指示 BackgroundWorker 是否正在運(yùn)行異步操作。
Site獲取或設(shè)置 Component 的 ISite。 (繼承自 Component。)
WorkerReportsProgress獲取或設(shè)置一個(gè)值,該值指示 BackgroundWorker 能否報(bào)告進(jìn)度更新。
WorkerSupportsCancellation獲取或設(shè)置一個(gè)值,該值指示 BackgroundWorker 是否支持異步取消。 方法 名稱說明
CancelAsync請求取消掛起的后臺操作。
CreateObjRef創(chuàng)建一個(gè)對象,該對象包含生成用于與遠(yuǎn)程對象進(jìn)行通信的代理所需的全部相關(guān)信息。 (繼承自MarshalByRefObject。)
Dispose()釋放由 Component 使用的所有資源。 (繼承自 Component。)
Dispose(Boolean)釋放 Component 占用的非托管資源,也可以選擇釋放托管資源。 (繼承自 Component。)
Equals(Object)確定指定的 Object 是否等于當(dāng)前的 Object。 (繼承自 Object。)
Finalize在通過垃圾回收將 Component 回收之前,釋放非托管資源并執(zhí)行其他清理操作。 (繼承自 Component。)
GetHashCode用作特定類型的哈希函數(shù)。 (繼承自 Object。)
GetLifetimeService檢索控制此實(shí)例的生存期策略的當(dāng)前生存期服務(wù)對象。 (繼承自 MarshalByRefObject。)
GetService返回一個(gè)對象,該對象表示由 Component 或它的 Container 提供的服務(wù)。 (繼承自 Component。)
GetType獲取當(dāng)前實(shí)例的 Type。 (繼承自 Object。)
InitializeLifetimeService獲取控制此實(shí)例的生存期策略的生存期服務(wù)對象。 (繼承自 MarshalByRefObject。)
MemberwiseClone()創(chuàng)建當(dāng)前 Object 的淺表副本。 (繼承自 Object。)
MemberwiseClone(Boolean)創(chuàng)建當(dāng)前 MarshalByRefObject 對象的淺表副本。 (繼承自 MarshalByRefObject。)
OnDoWork引發(fā) DoWork 事件。
OnProgressChanged引發(fā) ProgressChanged 事件。
OnRunWorkerCompleted引發(fā) RunWorkerCompleted 事件。
ReportProgress(Int32)引發(fā) ProgressChanged 事件。
ReportProgress(Int32, Object)引發(fā) ProgressChanged 事件。
RunWorkerAsync()開始執(zhí)行后臺操作。
RunWorkerAsync(Object)開始執(zhí)行后臺操作。
ToString返回包含 Component 的名稱的 String(如果有)。 不應(yīng)重寫此方法。 (繼承自 Component。)事件 名稱說明
Disposed當(dāng)通過調(diào)用 Dispose 方法釋放組件時(shí)發(fā)生。 (繼承自 Component。)
DoWork調(diào)用 RunWorkerAsync 時(shí)發(fā)生。
ProgressChanged調(diào)用 ReportProgress 時(shí)發(fā)生。
RunWorkerCompleted當(dāng)后臺操作已完成、被取消或引發(fā)異常時(shí)發(fā)生。 示例本代碼運(yùn)行環(huán)境:Windows XP, Visual Studio 2010, .NET Framework 4, C#下面的代碼示例演示 BackgroundWorker 類異步執(zhí)行耗時(shí)的基本知識。 下圖顯示輸出的示例。
要嘗試該代碼,可創(chuàng)建 Windows 窗體應(yīng)用程序。 添加一個(gè)名為 resultLabel 的 Label 控件并添加兩個(gè)名為 startAsyncButton 和 cancelAsyncButton 的 Button 控件。 創(chuàng)建這兩個(gè)按鈕的 Click 事件處理程序。 從工具箱中的“組件”選項(xiàng)卡中,添加命名為 backgroundWorker1 的 BackgroundWorker 組件。 創(chuàng)建 DoWork、 ProgressChanged 和 BackgroundWorker 的 RunWorkerCompleted 事件處理程序。 在窗體的代碼中,用下列代碼替換現(xiàn)有代碼。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication5{ public partial class Form1 : Form { public Form1() { InitializeComponent(); backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = true; } private void startAsyncButton_Click(object sender, EventArgs e) { if (backgroundWorker1.IsBusy != true) { // 啟動異步操作 backgroundWorker1.RunWorkerAsync(); } this.startAsyncButton.Enabled = false; } private void cancelAsyncButton_Click(object sender, EventArgs e) { if (backgroundWorker1.WorkerSupportsCancellation == true) { // 取消異步操作 backgroundWorker1.CancelAsync(); } this.startAsyncButton.Enabled = true; } //主任務(wù)的實(shí)現(xiàn) private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int i = 1; i <= 10; i++) { if (worker.CancellationPending == true) { e.Cancel = true; break; } else { // 執(zhí)行計(jì)時(shí)操作并且報(bào)告進(jìn)度 System.Threading.Thread.Sleep(500); worker.ReportProgress(i * 10); } } } //更新進(jìn)度 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { resultLabel.Text = (e.ProgressPercentage.ToString() + "%"); } //處理后臺操作結(jié)果 private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled == true) { resultLabel.Text = "Canceled!"; } else if (e.Error != null) { resultLabel.Text = "Error: " + e.Error.Message; } else { resultLabel.Text = "Done!"; } } }}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
c# BackGroundWorker 多線程操作的小例子
DirListBox 控件(針對 Visual Basic 6.0 用戶)
C#怎么獲得當(dāng)前窗體的活動控件
VB- 用戶界面
控件和組件的區(qū)別
vb6.0官方下載|vb6.0中文版 完整版
更多類似文章 >>
生活服務(wù)
首頁
萬象
文化
人生
生活
健康
教育
職場
理財(cái)
娛樂
藝術(shù)
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點(diǎn)擊這里,查看已保存的文章
導(dǎo)長圖
關(guān)注
一鍵復(fù)制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時(shí)立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×