程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 在c#使用IOCP(完成端口)的簡單示例(3)

在c#使用IOCP(完成端口)的簡單示例(3)

編輯:關於C語言

開始我也一樣迷惑怎樣傳送對象引用,後來經過研究發現可以這樣解決完成端口傳送對象的問題。使用以下方式來聲明api:

[DllImport("Kernel32")]
private static extern bool PostQueuedCompletionStatus(UInt32 completionPort, int numberOfBytesTransferred,IntPtr completionKey, IntPtr overlapped);
[DllImport("Kernel32")]
private static extern bool GetQueuedCompletionStatus(UInt32 completionPort, ref int numberOfBytes,ref IntPtr completionKey, ref IntPtr overlapped,UInt32 milliseconds);

使用GetQueuedCompletionStatus和PostQueuedCompletionStatus的時候,用GCHandle對象來取得對象的指針,再傳送給它們作為參數就可以了。

int i=0;
object Value=new object();
GCHandle gcValue=GCHandle.Alloc(Value);
GCHandle gcKey=GCHandle.Alloc(i);
// Post an event into the IOCP Thread Pool
PostQueuedCompletionStatus(GetHandle, 4, (IntPtr)gcKey, (IntPtr)gcValue);

其它的按這個思路去解決就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved