[DllImport("user32.dll")]
static extern uint MsgWaitForMultipleObjectsEx(uint nCount, IntPtr [] pHandles,
uint dwMilliseconds, uint dwWakeMask, uint dwFlags);
Private Declare Function MsgWaitForMultipleObjects Lib "User32.dll" ( _
ByVal nCount As Integer, _
ByVal pHandles() As IntPtr, _
ByVal bWaitAll As Integer, _
ByVal dwMilliseconds As Integer, _
ByVal dwWakeMask As Integer) As Integer
None.
None.
Please add some!
Private Const QS_ALLEVENTS As Integer = 1215
Private Const WAIT_OBJECT_0 As Integer = 0
Private Const WAIT_FAILED As Integer = -1
Dim arrHandles(0) As IntPtr
Dim bAddref As Boolean
Try
readyEvent.SafeWaitHandle.DangerousAddRef(bAddref)
arrHandles(0) = readyEvent.SafeWaitHandle.DangerousGetHandle()
Select Case MsgWaitForMultipleObjects(1, arrHandles, 1, waitInterval, QS_ALLEVENTS)
Case WAIT_OBJECT_0
retcode = True
Case WAIT_FAILED
Dim errorCode As Integer = System.Runtime.InteropServices.Marshal.GetLastWin32Error
Dim errMsg As String = New System.ComponentModel.Win32Exception(errorCode).Message
Throw New Exception(errMsg)
Case Else
Return False
End Select
Catch ex As Exception
Trace.TraceError("TaskInvoker.Execute - {0}", ex.Message)
Throw
Finally
readyEvent.SafeWaitHandle.DangerousRelease()
End Try
Do you know one? Please contribute it!
[DllImport("User32.dll", SetLastError = true)]
private static extern int MsgWaitForMultipleObjectsEx(
int nCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] IntPtr[] pHandles,
int dwMilliseconds,
int dwWakeMask,
int dwFlags);