詳解什么是C#回調
1.什么是回調函數
回調函數(callbackFunction),顧名思義,用于回調的函數。回調函數只是一個功能片段,由用戶按照回調函數調用約定來實現的一個函數。回調函數是一個工作流的一部分,由工作流來決定函數的調用(回調)時機。回調函數包含下面幾個特性:
屬于工作流的一個部分;
必須按照工作流指定的調用約定來申明(定義);
他的調用時機由工作流決定,回調函數的實現者不能直接調用回調函數來實現工作流的功能;
2.C#回調機制
C#回調機制是一種常見的設計模型,他把工作流內的某個功能,按照約定的接口暴露給外部使用者,為外部使用者提供數據,或要求外部使用者提供數據。
如上圖所示,工作流提供了兩個對外接口(獲取參數、顯示結果),以回調函數的形式實現。
“獲取參數”回調函數,需要工作流使用者設定工作流計算需要的參數。
“顯示結果”回調函數,提供計算結果給工作流使用者。
3.C#回調機制應用
使用回調機制,可以為工作流實現擴展。可以把工作流中需要用戶干預的,或需要提供給用戶的數據以回調的模式提供給用戶。而用戶不需要知道整個工作的流程,只需知道回調函數的說明就可以使用工作流模塊提供的功能,這對信息的隱藏也是有作用的。
4.回調機制的實現形式
回調函數
虛擬函數
事件
example:以虛函數實現回調機制(有時間補充C#版本)
- Code
- classCWorkFlow
- {
- voidinit()
- {
- _a=0;
- _b=0;
- }
- int_a;
- int_b;
- public:
- voidStart()
- {
- //初始化
- init();
- //調用處理數據
- Handle(a,b);
- //報告結果
- Report(a,b);
- }
- virtualvoidHandle(int&a,int&b)=0;
- virtualvoidReport(intiRet)=0;
- };
- classCMain:
- publicCWorkFlow
- {
- public:
- voidHandle(int&a,int&b)
- {
- a=a+b/2;
- }
- voidReport(intiRet)
- {
- printf("iRet=%d\n",iRet);
- }
- };
- //application
- intmain()
- {
- CMainmain;
- main.Start();
- }
本文來自王之永的博客園博文《C#回調》
【編輯推薦】