diff --git a/Directory.Packages.props b/Directory.Packages.props index d90b85b8..a0e08792 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -31,7 +31,7 @@ - + diff --git a/src/Microsoft.VisualStudio.Threading/NoMessagePumpSyncContext.cs b/src/Microsoft.VisualStudio.Threading/NoMessagePumpSyncContext.cs index 5d1f1b58..feea9a50 100644 --- a/src/Microsoft.VisualStudio.Threading/NoMessagePumpSyncContext.cs +++ b/src/Microsoft.VisualStudio.Threading/NoMessagePumpSyncContext.cs @@ -47,7 +47,7 @@ public static SynchronizationContext Default /// /// The array index of the object that satisfied the wait. /// - public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) + public override unsafe int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) { Requires.NotNull(waitHandles, nameof(waitHandles)); @@ -61,7 +61,10 @@ public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTim if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) #endif { - return (int)PInvoke.WaitForMultipleObjects(MemoryMarshal.Cast(waitHandles), waitAll, (uint)millisecondsTimeout); + fixed (IntPtr* pHandles = waitHandles) + { + return (int)PInvoke.WaitForMultipleObjects((uint)waitHandles.Length, (HANDLE*)pHandles, waitAll, (uint)millisecondsTimeout); + } } else {