详解什么是C#回调

转:王之永 博客园

1.什么是回调函数

回调函数(callbackFunction),顾名思义,用于回调的函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性:

属于工作流的一个部分;

必须按照工作流指定的调用约定来申明(定义);

他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能;

2.C#回调机制

C#回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。

回调机制图

如上图所示,工作流提供了两个对外接口(获取参数、显示结果),以回调函数的形式实现。

“获取参数”回调函数,需要工作流使用者设定工作流计算需要的参数。

“显示结果”回调函数,提供计算结果给工作流使用者。

3.C#回调机制应用

使用回调机制,可以为工作流实现扩展。可以把工作流中需要用户干预的,或需要提供给用户的数据以回调的模式提供给用户。而用户不需要知道整个工作的流程,只需知道回调函数的说明就可以使用工作流模块提供的功能,这对信息的隐藏也是有作用的。

4.回调机制的实现形式

回调函数

虚拟函数

事件

example:以虚函数实现回调机制(有时间补充C#版本)


class  CWorkFlow 

   void init() 
   { 
      _a=0; 
      _b=0; 
   } 
 
   int_a; 
   int_b;  
  public: 

    void Start() 
    { 

     //初始化 
     init(); 

     //调用处理数据 
     Handle(a,b); 

     //报告结果
     Report(a,b); 
    } 
   
     virtual void Handle(int &a,int &b)=0; 
     virtual void Report(int iRet)=0; 
}; 

 
class CMain: public CWorkFlow 

 public: 
    void Handle(int &a,int &b) 
    {
     a=a+b/2; 
    } 
    
    void Report(int iRet) 
    {
     printf("iRet=%d\n",iRet); 
    } 
}; 
 
//application 
 
intmain() 

  CMain  main; 
  main.Start(); 
}

转载于:https://www.cnblogs.com/finered/archive/2011/07/24/2115169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值