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
{