くだすれ.NET(超初 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
238:デフォルトの名無しさん 08/01/25 19:41:14 いやいやいやいや 239:デフォルトの名無しさん 08/01/28 23:56:45 Win32APIまじりの質問になって申しわけありません。 現在C++/CLIを使用して.NETからWin32APIでの非同期IOを行っています。 非同期IOの完了通知にSystem.Threading.Overlappedクラスを使っています。 非同期での書き込みは完了し、待機イベントもシグナルを受信するのですが、 Overlapped.Packメソッドに渡したコールバックデリゲートが呼ばれなくて困っています。 1 Overlappedをインスタンス化する。(hEventは手動リセットイベントオブジェクト asyncはIAsyncResultを実装したクラス Overlapped ^ overlapped = gcnew Overlapped(0 , 0 , IntPtr(hEvent) , async); 2 Packする。 NativeOverlapped * nativeOverlapped = overlapped->Pack(callback , buffer); 3 非同期IOを行う WriteFile(hIO ,Marshal::UnsafeAddrOfPinnedArrayElement(buffer,0).ToPointer() , buffer->Length , NULL , (LPOVERLAPPED)nativeOverlapped); 4 完了通知を受け取った(hEventがシグナルを受信)あとにリソースを開放する Overlapped ^ overlapped = Overlapped::Unpack(nativeOverlapped); Overlapped::Free(nativeOverlapped); で間違いありませんよね? hIOはFILE_FLAG_OVERLAPPEDを設定して開いてあります。 コールバックデリゲートを呼び出すには何か他の操作が必要なのでしょうか?
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4677日前に更新/234 KB
担当:undef