C# Callback 回调实用讲解 [原创]
这个是2011年写的一个技术贴,现在看可能有点过时了,有兴趣的朋友也可以看一下。
一. 描述
在开发winform程序时不会考虑页面刷新问题,只要控制好线程别导致假死就ok了,但是在开发web页面程序时,刷新有的时候真是头痛的很。页面回调可以解决这个问题,下面简单就实用来讲对callback做下介绍。
二. 讲解
在网上看了很多关于原理呀什么的讲解,起初也是一头雾水,如果只是使用,不用了解那么多,那些原理在开发web网络功能时可以多了解一下,相关知识可以到网上搜一下,在这里我就简单说一下如何使用。
其实你只要走完5步就完成了,很简单:
1.设置触发事件,例如:
<div onclick="fun_callbk('大家好我是王东银)">click me</div>
2.编写两个客户端函数,例如:
...
function fun_callbk(msg)//这个函数就是你点击事件要触发的方法,其中就写一句话
{
<%=this.ClientScript.GetCallbackEventReference(this,"msg","showMsg",null)%>
//这句话简单讲就是在客户端注册一个引用,其中的参数你可以到网上搜一下,一般使用4个参数就够了
//第一个参数:指的是page类
//第二个参数:事件触发方法的参数
//第三个参数:接收服务端返回数据的函数,下面会定义
//第四个参数:一般设为null就可以了
}
function showMsg(rValue)//这个就是上面的第三个参数,接受服务端返回的值
{
alert(rValue);//简单点写,弄的那么复杂大家就看迷糊了
}
3.编写服务端程序
这一步比较简单了,你必须要做的三件事:
a.引用一个接口:ICallbackEventHandler,这是必须的,和前面的类或接口以,隔开(这是c#基础了)
b.声明第一个函数,用于接收客户端传来的值,如下:
//记住:函数名字不可以随便,必须是RaiseCallbackEvent才可以
//首先声明一个变量,方便讲解
string myStr=string.Empty;
public void RaiseCallbackEvent(string arg)
{
myStr=arg+"hello";//还是简单的写,将客户端传来的值赋给咱新声明的变量
//加一个hello,是为了验证数据的确是有服务端处理后返回的
}
c.声明另一个函数,用于将结果返回客户端
//这个函数的名字也必须是GetCallbackResult,不可以修改
public string GetCallbackResult() { return myStr;//将结果返回客户端 }
好了,到这里你基本已经完成了!
三. 做一下总结
其实就用到4个方法,fun_callbk(),showMsg(),GetCallbackResult(),RaiseCallbackEvent()
需要添加一个引用:<%=this.ClientScript.GetCallbackEventReference(this,"arg,"showMsg",null)%>
需要继承一个接口:ICallbackEventHandler
就这些,你可以简单的这样理解:
fun_callbk()将客户端的值传给服务端的RaiseCallbackEvent();服务端处理完后通过GetCallbackResult()将值又返回客户端的showMsg(),就OK了
C# Callback 回调实用讲解 [原创]的更多相关文章
- JavaScript Callback 回调函数
JavaScript callback回调函数 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这 ...
- v-if和v-show的区别以及callback回调函数的体会
今天总结一下最近一周碰到的一些问题 一.v-if和v-show的区别 v-show用的是css属性中的display="block/none",元素被隐藏了但是节点还在页面中,但是 ...
- js中promise解决callback回调地狱以及使用async+await异步处理的方法
1.callback回调地狱 function ajax(fn) { setTimeout(()=> { console.log('你好') fn() }, 1000) } ajax(() =& ...
- 关于js的callback回调函数的理解
回调函数的处理逻辑理解:所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的 ...
- callback回调函数的理解
callback采用的设计模式是:模板模式,他的设计理念是基于面向对象中的多态的. 我们的程序中走到某个地方他会出现不一样的动作的时候,我们在这儿就使用回调函数.我们利用的就是 多态的原理,我们传递不 ...
- callback 回调函数
把函数a当做一个参数传入函数b <script> Array.prototype.mysort = function(callback){ let s = this; //准备向回调函数里 ...
- callback回调函数-python
链接:http://www.zhihu.com/question/19801131/answer/27459821来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 编程分 ...
- callback回调函数【转】
请给作者点赞--> 原文链接 什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programmi ...
- callback回调函数理解 相当于this指针
1.callback函数在微软的官方手册中是这样定义callback函数的:“callback函数是由应用程序定义而由操作系统调用的函数”. 凡是由用户设计而却由windows系统调用的函数,统称 ...
随机推荐
- 在SQL2005实现维护计划-备份数据库
一.備份數據庫維護計劃方案 [注]: 1.先啟動SQL Server Agent服務 2..交易記錄備份 (只限於完整和大量記錄復原模式). 3.下面中”清除備份trn文件” & “清除備份日 ...
- Android的string-array数据源简单使用
在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的arrays.xml文件里 <?xml version= ...
- Cocos2d-x ios 下http请求的另一种实现
简单描述下需求:游戏要加入事件log,比如玩家升到10级:创建角色:或是,触发这些事件后要求客户端忘后台抛送一条log信息.一般情况下,我们可以直接使用cocos自带的HttpClient(底层用li ...
- Spark常见错误汇总
1. Spark Driver cannot bind on port0, SparkContext initialized failed 如果是通过spark-submit等命令行提交的任务,在sp ...
- Problem - 433C - Codeforces解题报告
对于这题本人刚开始的时候的想法是:先把最大两数差的位置找到然后merge计算一个值再与一连串相同的数做merge后计算一个值比较取最大值输出:可提交后发现不对,于是本人就搜了一下正解发现原来这题的正确 ...
- [九度OJ]1008.最短路径问题
原题链接:http://ac.jobdu.com/problem.php?pid=1008 题目描述: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离 ...
- boost------function的使用(Boost程序库完全开发指南)读书笔记
function是一个函数对象的“容器”,概念上像是c/c++中函数指针类型的泛化,是一种“智能函数指针”.它以对象的形式封装了原始的函数指针或函数对象,能够容纳任意符合函数签名的可调用对象. 因此, ...
- 工作7年,从《一个苏州IT人的5年挨踢经历》系列开始,博客1年半,纯纪念
真正涉足CSDN,还是从<一个苏州IT人的5年挨踢经历>系列的发帖开始,当时大家比较捧场,遂把帖子内容整理,其后创建CSDN博客并发表于其上.有了这个开端,后续就习惯性的开始在CSDN写技 ...
- maven依赖规则
1.就近原则,传递依赖 A-B-C -> A-C 2.先声明原则 A-B-C D-E-C 依赖的规则阻止了jar包冲突
- 开发日志_Jan.8.2017
这两天继续着手开发碰撞部分. 主要工作是写碰撞类和运动线程类.碰撞主要在于算法,运动线程只要管理好就行了. 之前碰撞测试中(即还未添加完整碰撞算法时)遇到各种bug,疑似机器人和小球的定位点不明所造成 ...