成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡(jiǎn)單介紹C# 回調(diào)函數(shù)

開(kāi)發(fā) 后端
本文介紹C# 回調(diào)函數(shù)是應(yīng)用程序提供給Windows系統(tǒng)DLL或其它DLL調(diào)用的函數(shù),一般用于截獲消息、獲取系統(tǒng)信息或處理異步事件。

什么是C# 回調(diào)函數(shù)?
 
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),很多不同類(lèi)別的回調(diào)函數(shù)有各種各樣的參數(shù),有關(guān)這些參數(shù)的描述一般在幫助中有說(shuō)明回調(diào)函數(shù)的參數(shù)和返回值等.其實(shí)簡(jiǎn)單說(shuō)回調(diào)函數(shù)就是你所寫(xiě)的函數(shù)滿足一定條件后,被DLL調(diào)用!

也有這樣的說(shuō)法(比較容易理解):
C# 回調(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.  
  3. usingSystem;  
  4.  
  5. namespaceCallBackSample  
  6. ...{  
  7. publicdelegatestringShowMessage(stringmessage);  
  8. internalclassWorkClass  
  9. ...{  
  10. publicvoidDoWork(stringmessage)  
  11. ...{  
  12. ShowMessageshowMessage=newShowMessage(showCoolMessage);  
  13. showMessage+=showTerribleMessage;  
  14. stringresult="";  
  15. foreach(ShowMessageshinshowMessage.GetInvocationList())  
  16. ...{  
  17. result+=sh(message);  
  18. }  
  19. Console.Write(result);  
  20. Console.Read();  
  21. }  
  22.  
  23. privatestringshowCoolMessage(stringmessage)  
  24. ...{  
  25. strings=message+"Cool!";  
  26. returns;  
  27. }  
  28.  
  29. privatestringshowTerribleMessage(stringmessage)  
  30. ...{  
  31. strings=message+"Terrible!";  
  32. returns;  
  33. }  
  34. }  
  35.  
  36. }  
  37.  
  38. program.cs:  
  39.  
  40. namespaceCallBackSample  
  41. ...{  
  42. classProgram  
  43. ...{  
  44. staticvoidMain(string[]args)  
  45. ...{  
  46. WorkClassworkClass=newWorkClass();  
  47. workClass.DoWork("Basketball");  
  48. }  
  49. }  

【編輯推薦】

  1. C# Iterator迭代器模式
  2. 概述C# New運(yùn)算符
  3. C# WiteOne學(xué)習(xí)筆記
  4. 用C# ListView顯示數(shù)據(jù)記錄
  5. C# ConfigDlg.cs源程序
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-08-07 17:12:07

C# DLL函數(shù)

2009-08-19 17:10:09

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

2009-08-07 09:29:22

C#數(shù)組C#函數(shù)

2009-07-31 16:25:29

C#回調(diào)函數(shù)API應(yīng)用

2009-08-19 16:40:35

C#回調(diào)

2009-07-31 14:15:38

C# 構(gòu)造函數(shù)

2009-08-21 17:55:52

C#復(fù)合控件

2009-08-07 17:41:40

C#預(yù)處理

2009-08-27 10:19:22

C#匿名類(lèi)型

2009-08-06 14:53:41

C# User類(lèi)

2009-08-18 17:37:57

C#固定指針

2009-08-10 16:19:37

C#冒泡排序

2009-08-14 17:27:56

C#方法參數(shù)

2009-08-13 17:36:54

編譯C#代碼

2009-09-03 09:40:57

C#創(chuàng)建表單

2009-08-06 18:15:13

C# SQL Serv

2009-09-01 16:19:57

C# new()約束

2009-08-20 16:25:59

C# 匿名方法

2009-08-25 13:38:35

C# Timer組件

2009-08-14 16:46:44

C#元數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩欧美一区二区在线播放 | 欧美一级片 | 伊人久麻豆社区 | 国产精品资源在线 | 成人精品一区亚洲午夜久久久 | 国产精品我不卡 | 国产精品久久久久久久一区探花 | 欧美极品在线观看 | 国产午夜精品久久 | 91久久久久久久久 | 国产精品福利一区二区三区 | 成av在线 | 网络毛片| a黄毛片| 亚洲免费一 | 欧美一区二区视频 | 一本岛道一二三不卡区 | 91免费高清 | 高清亚洲 | 国产亚洲一区二区三区在线观看 | 美国一级黄色片 | 中文字幕在线第一页 | 99在线免费观看视频 | 成人在线视频一区 | 国产一区二区三区亚洲 | 亚洲欧美国产精品久久 | 一区二区三区免费在线观看 | 国产免费又黄又爽又刺激蜜月al | 亚洲综合色丁香婷婷六月图片 | 国产欧美精品一区二区三区 | 欧美区精品 | 午夜影院普通用户体验区 | 黄色在线观看网址 | 香蕉视频在线播放 | 免费在线观看毛片 | 黄色精品| 免费成人高清在线视频 | 97高清国语自产拍 | 一区二区三区精品 | 99精品热视频 | 久久a久久|