msgwaitformultipleobjectsex (user32)
Last changed: -213.199.128.148

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern uint MsgWaitForMultipleObjectsEx(uint nCount, IntPtr [] pHandles,
   uint dwMilliseconds, uint dwWakeMask, uint dwFlags);

VB Signature:

    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

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    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

Alternative Managed API:

Do you know one? Please contribute it!

Documentation