C# Callback 回調實用講解 [原創]

来源:http://www.cnblogs.com/wangdy/archive/2016/02/19/5202263.html
-Advertisement-
Play Games

這個是2011年寫的一個技術貼,現在看可能有點過時了,有興趣的朋友也可以看一下。 一. 描述 在開發winform程式時不會考慮頁面刷新問題,只要控制好線程別導致假死就ok了,但是在開發web頁面程式時,刷新有的時候真是頭痛的很。頁面回調可以解決這個問題,下麵簡單就實用來講對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了


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 硬體特性 1.1 概述 I2C匯流排是由Philips公司開發的兩線式串列匯流排,這兩根線為時鐘線(SCL)和雙向數據線(SDA)。由於I2C匯流排僅需要兩根線,因此在電路板上占用的空間更少,帶來的問題是帶寬較窄。I2C在標準模式下傳輸速率最高100Kb/s,在快速模式下最高可達400kb/s。屬於半
  • 前言:之前偶然的機會學習了廖老師關於Git學習的一個網站,講解的很好很詳細,通俗易懂,學習之餘決定將廖老師帖子的精髓作一個總結(相當於是筆記啦~~),也方便日後查詢鞏固,希望大家共勉!查看廖老師詳細原帖! 1、安裝Git 這裡,我只介紹一下在Linux系統下Git的安裝,如果需要瞭解Unix、Mac
  • 一、生成證書,所需機器數必須 >= 2(一臺生成服務端證書,一臺生成客戶端證書),以下伺服器以A表示服務端、B表示客戶端來舉例,thrift版本為0.7.01、自簽名的證書的生成和測試 1)生成密鑰和證書相關 服務端A, openssl genrsa -out server-key.pem 2048
  • atitit.ntfs ext 文件系統新特性對比 1. 現代文件系統應該有的特性2 1.1. 恢復Log2 1.2. 壓縮2 1.3. Meta ext2 1.4. Fulltextཟsearch 全文2 1.5. Copy 校驗2 1.6. 稀疏文件,這是UNIX類和NTFS等文件系統的一個特性
  • 今天老師說了一個例子,提生面向對象思想,和大家分享下 雙擊可對其評價和評分 相對以前 我們有可能會這樣寫 //定義一個Tool類進行傳值 Tool.name = lv.SelectedItems[0].SubItems[1].Text;//姓名 Tool.pingjia = lv.SelectedI
  • 在程式中建立如下方法。 #region 刷新數據源 /// ///刷新數據源 /// /// dgv that is needed to refresh public void RefreshDataSourceOndgv(DataGridView dgv) ...
  • 在代碼生成工具的各種功能規劃中,我們一向以客戶的需求作為驅動,因此也會根據需要增加一些特殊的功能或者處理。在實際的開發中,雖然我們一般以具體的表進行具體業務開發,但是有些客戶提出有時候視圖開發也是很常見的,為了提高代碼生成和界面生成的效率,基於視圖開發的過程也應該支持。還有主從表的界面生成操作,在很...
  • 最近在做個包含了大量重覆樣式的控制項的網站. 如果用MVC的話,我可以針對每個需要單獨塊編輯的Model寫一個局部視圖. 然後根據不同邏輯需求拼起來.用現成MVC框架非常容易做到. 但環境是3.5的最高只能用MVC2,沒有razor語法,加上沒裝開發環境. 於是想乾脆自己寫一個模板生成HTML的框架,
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...