admin 管理员组

文章数量: 1086019


2024年12月26日发(作者:rm文件格式用什么播放器)

详解什么是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=%dn",iRet);

}

};

//application

intmain()

{

CMain main;

();

}


本文标签: 回调 工作 函数