2013-07-25 44 views
0

在我的應用程序中,我使用的P/Invoke並調用WaitForSingleObject:WaitForSingleObject的的P/Invoke

[DllImport("kernel32.dll", SetLastError=true)] 
    static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); 

然後事件被登記,

uint res = WaitForSingleObject(eventHandle, 0xFFFFFFFF); 
if (res == 0x00000000) 
{...} 

應用程序在Windows XP上運行正常32位,但無法在諸如Windows 7 64位等系統上返回值。有沒有人知道爲什麼在64位系統上發生這種情況?

回答

1

你的p/invoke是正確的。對WaitForSingleObject的調用永遠不會返回的唯一合理的解釋是該事件永遠不會變成信號。

另外,使用EventWaitHandle代替p/invoke似乎更簡單一些。