1.什么是回調函數
回調函數(callbackFunction),顧名思義,用於回調的函數。回調函數只是一個功能片段,由用戶按照回調函數調用約定來實現的一個函數。
2.C#回調函數實現機制
⑴定義一個回調函數;
⑵提供函數實現的一方在初始化的時候,將回調函數的實現函數委托給調用者;
⑶當特定的事件或條件發生的時候,調用者使用委托調用回調函數對事件進行處理。
3. 回調機制應用
使用回調機制,可以為工作流實現擴展。 可以把工作流中需要用戶干預的,或需要提供給用戶的數據以回調的模式提供給用戶。而用戶不需要知道整個工作的流程,只需知道回調函數的說明就可以使用工作流模塊提供的功能,這對信息的隱藏也是有作用的。
示例代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace CSharp_002_回調機制
{
public partial class frmMain : Form
{
//定義回調
private delegate void SetProgressBar2ValueCallBack(int value);
//聲明回調
private SetProgressBar2ValueCallBack setProgressBar2ValueCallBack;
public frmMain()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
//初始化回調
setProgressBar2ValueCallBack = new SetProgressBar2ValueCallBack(SetProgressBar2ValueMethod);
Thread progressBar2Thread = new Thread(SetProgressBar2Value);
progressBar2Thread.Start();
for (int i = 0; i <= 100; i++)
{
Application.DoEvents();
Thread.Sleep(50);
pgProgressBar1.Value = i;
}
}
//設置進度條2的值 的線程
private void SetProgressBar2Value()
{
for (int i = 0; i <= 100;i++ )
{
Thread.Sleep(50);
pgProgressBar2.Invoke(setProgressBar2ValueCallBack, i);
}
}
//設置進度條2的值 被委托的方法
private void SetProgressBar2ValueMethod(int value)
{
pgProgressBar2.Value = value;
}
}//end class frmMain
}
運行結果: