日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
講解如何實(shí)現(xiàn)C#回調(diào)函數(shù)

什么是C#回調(diào)函數(shù)?

成都創(chuàng)新互聯(lián)公司專注于濂溪企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開(kāi)發(fā)。濂溪網(wǎng)站建設(shè)公司,為濂溪等地區(qū)提供建站服務(wù)。全流程按需定制開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

C#回調(diào)函數(shù)是應(yīng)用程序提供給Windows系統(tǒng)DLL或其它DLL調(diào)用的函數(shù),一般用于截獲消息、獲取系統(tǒng)信息或處理異步事件。應(yīng)用程序把回調(diào)函數(shù)的地址指針告訴DLL,而DLL在適當(dāng)?shù)臅r(shí)候會(huì)調(diào)用該函數(shù)?;卣{(diào)函數(shù)必須遵守事先規(guī)定好的參數(shù)格式和傳遞方式,否則DLL一調(diào)用它就會(huì)引起程序或系統(tǒng)的崩潰。通常情況下,回調(diào)函數(shù)采用標(biāo)準(zhǔn)WindowsAPI的調(diào)用方式,即__stdcall,當(dāng)然,DLL編制者可以自己定義調(diào)用方式,但客戶程序也必須遵守相同的規(guī)定。在__stdcall方式下,函數(shù)的參數(shù)按從右到左的順序壓入堆棧,除了明確指明是指針或引用外,參數(shù)都按值傳遞,函數(shù)返回之前自己負(fù)責(zé)把參數(shù)從堆棧中彈出。

理解C#回調(diào)函數(shù)!

程序在調(diào)用一個(gè)函數(shù)(function)時(shí)(通常指api).相當(dāng)于程序(program)呼叫(Call)了一個(gè)函數(shù)(function)關(guān)系表示如下:

call(調(diào)用)
program--------------------→dll
程序在調(diào)用一個(gè)函數(shù)時(shí),將自己的函數(shù)的地址作為參數(shù)傳遞給程序調(diào)用的函數(shù)時(shí)(那么這個(gè)自己的函數(shù)稱回調(diào)函數(shù)).需要回調(diào)函數(shù)的DLL函數(shù)往往是一些必須重復(fù)執(zhí)行某些操作的函數(shù).關(guān)系表示如下:

call(調(diào)用)
program--------------------→dll
↑¦
¦_______________________________¦
callback(回調(diào))

當(dāng)你調(diào)用的函數(shù)在傳遞返回值給回調(diào)函數(shù)時(shí),你就可以利用回調(diào)函數(shù)來(lái)處理或完成一定的操作。至于如何定義自己的回調(diào)函數(shù),跟具體使用的API函數(shù)有關(guān),很多不同類別的回調(diào)函數(shù)有各種各樣的參數(shù),有關(guān)這些參數(shù)的描述一般在幫助中有說(shuō)明回調(diào)函數(shù)的參數(shù)和返回值等.其實(shí)簡(jiǎn)單說(shuō)回調(diào)函數(shù)就是你所寫的函數(shù)滿足一定條件后,被DLL調(diào)用!

也有這樣的說(shuō)法(比較容易理解):

回調(diào)函數(shù)就好像是一個(gè)中斷處理函數(shù),系統(tǒng)在符合你設(shè)定的條件時(shí)自動(dòng)調(diào)用。為此,你需要做三件事:

1.聲明;

2.定義;

3.設(shè)置觸發(fā)條件,就是在你的函數(shù)中把你的回調(diào)函數(shù)名稱轉(zhuǎn)化為地址作為一個(gè)參數(shù),以便于DLL調(diào)用。

下面是示例代碼:

 
 
 
  1. WorkClass.cs:  
  2. usingSystem;  
  3. namespaceCallBackSample  
  4. ...{  
  5. publicdelegatestringShowMessage(stringmessage);  
  6. internalclassWorkClass  
  7. ...{  
  8. publicvoidDoWork(stringmessage)  
  9. ...{  
  10. ShowMessageshowMessage=newShowMessage(showCoolMessage);  
  11. showMessage+=showTerribleMessage;  
  12. stringresult="";  
  13. foreach(ShowMessageshinshowMessage.GetInvocationList())  
  14. ...{  
  15. result+=sh(message);  
  16. }  
  17. Console.Write(result);  
  18. Console.Read();  
  19. }  
  20.  
  21. privatestringshowCoolMessage(stringmessage)  
  22. ...{  
  23. strings=message+"Cool!";  
  24. returns;  
  25. }  
  26.  
  27. privatestringshowTerribleMessage(stringmessage)  
  28. ...{  
  29. strings=message+"Terrible!";  
  30. returns;  
  31. }  
  32. }  
  33.  
  34. }  
  35.  
  36.  
  37. program.cs:  
  38.  
  39. namespaceCallBackSample  
  40. ...{  
  41. classProgram  
  42. ...{  
  43. staticvoidMain(string[]args)  
  44. ...{  
  45. WorkClassworkClass=newWorkClass();  
  46. workClass.DoWork("Basketball");  
  47. }  
  48. }  

【編輯推薦】

  1. C#參數(shù)類型學(xué)習(xí)筆記
  2. 處理C#消息的方法
  3. C#重載LoadPostData方法
  4. 概述C#復(fù)合控件構(gòu)建
  5. C# JavaScript函數(shù)使用

網(wǎng)站標(biāo)題:講解如何實(shí)現(xiàn)C#回調(diào)函數(shù)
標(biāo)題來(lái)源:http://m.5511xx.com/article/codpsji.html