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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#中調(diào)用WindowsAPI之托管對象

C#中調(diào)用Windows API之托管對象是如何的呢?讓我們來看看:

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的寶應(yīng)網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

C#中調(diào)用Windows API如果在調(diào)用平臺 invoke 后的任何位置都未引用托管對象,則垃圾回收器可能將完成該托管對象。這將釋放資源并使句柄無效,從而導(dǎo)致平臺invoke 調(diào)用失敗。用 HandleRef 包裝句柄可保證在平臺 invoke 調(diào)用完成前,不對托管對象進行垃圾回收。

C#中調(diào)用Windows API實例下面:

 
 
 
  1.  FileStream fs = new FileStream(   
  2. "a.txt", FileMode.Open );  
  3. StringBuilder buffer = new StringBuilder( 5 );  
  4. int read = 0;  
  5. ReadFile(fs.Handle, buffer, 5, out read, 0 );   
  6. //調(diào)用Win API中的ReadFile函數(shù)  

由于fs是托管對象,所以有可能在平臺調(diào)用還未完成時候被垃圾回收站回收。將文件流的句柄用HandleRef包裝后,就能避免被垃圾站回收:

 
 
 
  1. [ DllImport( "Kernel32.dll" )]  
  2. public static extern bool ReadFile(   
  3. HandleRef hndRef,   
  4. StringBuilder buffer,   
  5. int numberOfBytesToRead,   
  6. out int numberOfBytesRead,   
  7. ref Overlapped flag );  
  8. ......  
  9. ......  
  10. FileStream fs = new FileStream(  
  11.  "HandleRef.txt", FileMode.Open );  
  12. HandleRef hr = new HandleRef( fs, fs.Handle );  
  13. StringBuilder buffer = new   
  14. StringBuilder( 5 );  
  15. int read = 0;  
  16. // platform invoke will hold   
  17. //reference to HandleRef until call ends  
  18. ReadFile( hr, buffer, 5, out read, 0 );  

C#中調(diào)用Windows API之如何保證使用托管對象的平臺調(diào)用成功的相關(guān)內(nèi)容就向你介紹到這里,希望對你了解C#中調(diào)用Windows API有所幫助。


網(wǎng)站題目:C#中調(diào)用WindowsAPI之托管對象
鏈接URL:http://m.5511xx.com/article/dhsiide.html