- - PR -
CreateSemaphoreの使い方を教えてください
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-07-22 22:58
プロセスの同期を取るため、セマフォを使っているのですが
WaitForSingleObjectで制御が戻って来ないで、止まってしまいます。 どなたか、vb.netでセマフォを使ったことがある方ご教授下さい。 Public Declare Auto Function WaitForSingleObject Lib "kernel32.dll" _ (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Public Declare Auto Function CreateSemaphore Lib "Kernel32.dll" Alias "CreateSemaphoreA" _ (ByVal lAtt As Long, ByVal lInitCount As Long, ByVal lMaxCount As Long, ByVal lpName As String) As Long Dim m_lhandle As Long m_lhandle = CreateSemaphore(Nothing, 1, 1, "SEMAPHORE_NAME") 'もし待機中なら制御が戻るまで待つ If Nothing <> m_lhandle Then 'WaitForSingleObject(m_lhandle, INFINITE) '&HFFFFはだめでした。 WaitForSingleObject(m_lhandle, 0) '0でもだめでした。 end if 全く同じプログラムで、VC6.0では正常に動作しました。 開発環境は vb.net 2003 OSはXPです。 | ||||
|
投稿日時: 2004-07-22 23:05
WaitHandle派生クラスを作った方が良さげってのはおいとくとして… とりあえず、LongのところをIntegerに変えてみてください。 あ、ハンドルのところはIntPtrの方がいいかな。 | ||||
|
投稿日時: 2004-07-22 23:37
>>とりあえず、LongのところをIntegerに変えてみてください。
>>あ、ハンドルのところはIntPtrの方がいいかな。 ご教授ありがとうございます! うまくいきました。 これで今日は眠れます。結構ずっぽりはまっていたのでかなりうれしいです。 >>WaitHandle派生クラスを作った方が良さげってのはおいとくとして… 調べてみます。アドバイスまでいただいて、感謝です。m(__)m |
1