標籤:delegate 線程
委託可以理解為C或C++裡面的函數指標,調用委託其實是調用被委託的方法。
簡單的使用委託的步驟如下:
1.定義委託
// 定義委託使用關鍵字 delegate
private delegate void SetProgressBarValueDelegate(int value);
2.聲明委託
private SetProgressBarValueDelegate setProgressBarValue;
3.執行個體化委託
setProgressBarValue = new SetProgressBarValueDelegate(SetProgressBarValue1);
SetProgressBarValue1是被委託的方法名稱,參數類型要和委託的類型保持一致。其原型如下:
// 設定進度條1值
private void SetProgressBarValue1(int value)
{
pgProgressBar1.Value = value;
}
4.使用委託:
SetProgressBarValueMethod(setProgressBarValue);
// 設定進度條值
private void SetProgressBarValueMethod(SetProgressBarValueDelegate setProgressBarValueDelegate)
{
for (int i = 1; i <= 100; i++)
{
Application.DoEvents();
Thread.Sleep(50);
setProgressBarValueDelegate(i);
}
}
/* 此命令可告訴系統繼續處理使用者介面的其它事件,避免假死
* 等同於 Visual Basic 6.0 的 DoEvents()
* 等同於 易語言 的 處理事件() */
Application.DoEvents();
/* 此命令用於線程暫停(參數:毫秒)
* 此處用在主線程中,會導致假死,加暫停只為了看得更清楚 */
Thread.Sleep(50);
C#使用委託的簡單步驟