C# 委托的回調機制


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
}

運行結果:

image

 

 

http://www.cnblogs.com/hanzhaoxin/archive/2013/02/18/2915275.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM