@@ -178,7 +178,7 @@ public void Wait()
178178 if ( OperatingSystem . IsWasi ( ) ) throw new PlatformNotSupportedException ( ) ; // TODO remove with https://github.com/dotnet/runtime/pull/107185
179179#endif
180180 // Call wait with infinite timeout
181- Wait ( Timeout . UnsignedInfinite , CancellationToken . None ) ;
181+ Wait ( Timeout . Infinite , CancellationToken . None ) ;
182182 }
183183
184184 /// <summary>
@@ -198,7 +198,7 @@ public void Wait(CancellationToken cancellationToken)
198198 if ( OperatingSystem . IsWasi ( ) ) throw new PlatformNotSupportedException ( ) ; // TODO remove with https://github.com/dotnet/runtime/pull/107185
199199#endif
200200 // Call wait with infinite timeout
201- Wait ( Timeout . UnsignedInfinite , cancellationToken ) ;
201+ Wait ( Timeout . Infinite , cancellationToken ) ;
202202 }
203203
204204 /// <summary>
@@ -221,14 +221,14 @@ public bool Wait(TimeSpan timeout)
221221#endif
222222 // Validate the timeout
223223 long totalMilliseconds = ( long ) timeout . TotalMilliseconds ;
224- if ( totalMilliseconds < - 1 || totalMilliseconds > Timer . MaxSupportedTimeout )
224+ if ( totalMilliseconds < - 1 )
225225 {
226226 throw new ArgumentOutOfRangeException (
227227 nameof ( timeout ) , timeout , SR . SemaphoreSlim_Wait_TimeSpanTimeoutWrong ) ;
228228 }
229229
230230 // Call wait with the timeout milliseconds
231- return Wait ( totalMilliseconds == Timeout . Infinite ? Timeout . UnsignedInfinite : ( uint ) totalMilliseconds , CancellationToken . None ) ;
231+ return Wait ( totalMilliseconds , CancellationToken . None ) ;
232232 }
233233
234234 /// <summary>
@@ -255,14 +255,14 @@ public bool Wait(TimeSpan timeout, CancellationToken cancellationToken)
255255#endif
256256 // Validate the timeout
257257 long totalMilliseconds = ( long ) timeout . TotalMilliseconds ;
258- if ( totalMilliseconds < - 1 || totalMilliseconds > Timer . MaxSupportedTimeout )
258+ if ( totalMilliseconds < - 1 )
259259 {
260260 throw new ArgumentOutOfRangeException (
261261 nameof ( timeout ) , timeout , SR . SemaphoreSlim_Wait_TimeSpanTimeoutWrong ) ;
262262 }
263263
264264 // Call wait with the timeout milliseconds
265- return Wait ( totalMilliseconds == Timeout . Infinite ? Timeout . UnsignedInfinite : ( uint ) totalMilliseconds , cancellationToken ) ;
265+ return Wait ( totalMilliseconds , cancellationToken ) ;
266266 }
267267
268268 /// <summary>
@@ -309,7 +309,7 @@ public bool Wait(int millisecondsTimeout, CancellationToken cancellationToken)
309309 nameof ( millisecondsTimeout ) , millisecondsTimeout , SR . SemaphoreSlim_Wait_TimeoutWrong ) ;
310310 }
311311
312- return Wait ( millisecondsTimeout == Timeout . Infinite ? Timeout . UnsignedInfinite : ( uint ) millisecondsTimeout , cancellationToken ) ;
312+ return Wait ( millisecondsTimeout , cancellationToken ) ;
313313 }
314314
315315 /// <summary>
@@ -323,7 +323,7 @@ public bool Wait(int millisecondsTimeout, CancellationToken cancellationToken)
323323 /// <returns>true if the current thread successfully entered the <see cref="SemaphoreSlim"/>; otherwise, false.</returns>
324324 /// <exception cref="OperationCanceledException"><paramref name="cancellationToken"/> was canceled.</exception>
325325 [ UnsupportedOSPlatform ( "browser" ) ]
326- private bool Wait ( uint millisecondsTimeout , CancellationToken cancellationToken )
326+ private bool Wait ( long millisecondsTimeout , CancellationToken cancellationToken )
327327 {
328328 CheckDispose ( ) ;
329329#if FEATURE_WASM_MANAGED_THREADS
@@ -339,9 +339,9 @@ private bool Wait(uint millisecondsTimeout, CancellationToken cancellationToken)
339339 }
340340
341341 long startTime = 0 ;
342- if ( millisecondsTimeout != Timeout . UnsignedInfinite && millisecondsTimeout > 0 )
342+ if ( millisecondsTimeout != Timeout . Infinite && millisecondsTimeout > 0 )
343343 {
344- startTime = TimeoutHelper . GetTime64 ( ) ;
344+ startTime = Environment . TickCount64 ;
345345 }
346346
347347 bool waitSuccessful = false ;
@@ -465,7 +465,7 @@ private bool Wait(uint millisecondsTimeout, CancellationToken cancellationToken)
465465 /// <param name="cancellationToken">The CancellationToken to observe.</param>
466466 /// <returns>true if the monitor received a signal, false if the timeout expired</returns>
467467 [ UnsupportedOSPlatform ( "browser" ) ]
468- private bool WaitUntilCountOrTimeout ( uint millisecondsTimeout , long startTime , CancellationToken cancellationToken )
468+ private bool WaitUntilCountOrTimeout ( long millisecondsTimeout , long startTime , CancellationToken cancellationToken )
469469 {
470470#if TARGET_WASI
471471 if ( OperatingSystem . IsWasi ( ) ) throw new PlatformNotSupportedException ( ) ; // TODO remove with https://github.com/dotnet/runtime/pull/107185
@@ -481,7 +481,7 @@ private bool WaitUntilCountOrTimeout(uint millisecondsTimeout, long startTime, C
481481 // Since Monitor.Wait will handle the actual wait and it accepts an int timeout,
482482 // we may need to cap the timeout to int.MaxValue.
483483 bool timeoutIsCapped = false ;
484- if ( millisecondsTimeout != Timeout . UnsignedInfinite )
484+ if ( millisecondsTimeout != Timeout . Infinite )
485485 {
486486 long remainingWaitMilliseconds = TimeoutHelper . UpdateTimeOut ( startTime , millisecondsTimeout ) ;
487487 if ( remainingWaitMilliseconds <= 0 )
@@ -531,7 +531,7 @@ private bool WaitUntilCountOrTimeout(uint millisecondsTimeout, long startTime, C
531531 /// <returns>A task that will complete when the semaphore has been entered.</returns>
532532 public Task WaitAsync ( )
533533 {
534- return WaitAsync ( Timeout . UnsignedInfinite , default ) ;
534+ return WaitAsync ( Timeout . Infinite , default ) ;
535535 }
536536
537537 /// <summary>
@@ -547,7 +547,7 @@ public Task WaitAsync()
547547 /// </exception>
548548 public Task WaitAsync ( CancellationToken cancellationToken )
549549 {
550- return WaitAsync ( Timeout . UnsignedInfinite , cancellationToken ) ;
550+ return WaitAsync ( Timeout . Infinite , cancellationToken ) ;
551551 }
552552
553553 /// <summary>
@@ -619,14 +619,14 @@ public Task<bool> WaitAsync(TimeSpan timeout, CancellationToken cancellationToke
619619 {
620620 // Validate the timeout
621621 long totalMilliseconds = ( long ) timeout . TotalMilliseconds ;
622- if ( totalMilliseconds < - 1 || totalMilliseconds > Timer . MaxSupportedTimeout )
622+ if ( totalMilliseconds < - 1 )
623623 {
624624 throw new ArgumentOutOfRangeException (
625625 nameof ( timeout ) , timeout , SR . SemaphoreSlim_Wait_TimeSpanTimeoutWrong ) ;
626626 }
627627
628628 // Call wait with the timeout milliseconds
629- return WaitAsync ( totalMilliseconds == Timeout . Infinite ? Timeout . UnsignedInfinite : ( uint ) totalMilliseconds , cancellationToken ) ;
629+ return WaitAsync ( totalMilliseconds , cancellationToken ) ;
630630 }
631631
632632 /// <summary>
@@ -655,7 +655,7 @@ public Task<bool> WaitAsync(int millisecondsTimeout, CancellationToken cancellat
655655 nameof ( millisecondsTimeout ) , millisecondsTimeout , SR . SemaphoreSlim_Wait_TimeoutWrong ) ;
656656 }
657657
658- return WaitAsync ( millisecondsTimeout == Timeout . Infinite ? Timeout . UnsignedInfinite : ( uint ) millisecondsTimeout , cancellationToken ) ;
658+ return WaitAsync ( millisecondsTimeout , cancellationToken ) ;
659659 }
660660
661661 /// <summary>
@@ -673,7 +673,7 @@ public Task<bool> WaitAsync(int millisecondsTimeout, CancellationToken cancellat
673673 /// </returns>
674674 /// <exception cref="ObjectDisposedException">The current instance has already been
675675 /// disposed.</exception>
676- private Task < bool > WaitAsync ( uint millisecondsTimeout , CancellationToken cancellationToken )
676+ private Task < bool > WaitAsync ( long millisecondsTimeout , CancellationToken cancellationToken )
677677 {
678678 CheckDispose ( ) ;
679679
@@ -702,7 +702,7 @@ private Task<bool> WaitAsync(uint millisecondsTimeout, CancellationToken cancell
702702 {
703703 Debug . Assert ( m_currentCount == 0 , "m_currentCount should never be negative" ) ;
704704 TaskNode asyncWaiter = CreateAndAddAsyncWaiter ( ) ;
705- return ( millisecondsTimeout == Timeout . UnsignedInfinite && ! cancellationToken . CanBeCanceled ) ?
705+ return ( millisecondsTimeout == Timeout . Infinite && ! cancellationToken . CanBeCanceled ) ?
706706 asyncWaiter :
707707 WaitUntilCountOrTimeoutAsync ( asyncWaiter , millisecondsTimeout , cancellationToken ) ;
708708 }
@@ -767,13 +767,13 @@ private bool RemoveAsyncWaiter(TaskNode task)
767767 /// <param name="millisecondsTimeout">The timeout.</param>
768768 /// <param name="cancellationToken">The cancellation token.</param>
769769 /// <returns>The task to return to the caller.</returns>
770- private async Task < bool > WaitUntilCountOrTimeoutAsync ( TaskNode asyncWaiter , uint millisecondsTimeout , CancellationToken cancellationToken )
770+ private async Task < bool > WaitUntilCountOrTimeoutAsync ( TaskNode asyncWaiter , long millisecondsTimeout , CancellationToken cancellationToken )
771771 {
772772 Debug . Assert ( asyncWaiter is not null , "Waiter should have been constructed" ) ;
773773 Debug . Assert ( Monitor . IsEntered ( m_lockObjAndDisposed ) , "Requires the lock be held" ) ;
774774
775775 await ( ( Task ) asyncWaiter . WaitAsync (
776- TimeSpan . FromMilliseconds ( millisecondsTimeout == Timeout . UnsignedInfinite ? ( long ) Timeout . Infinite : ( long ) millisecondsTimeout ) ,
776+ TimeSpan . FromMilliseconds ( millisecondsTimeout ) ,
777777 cancellationToken ) ) . ConfigureAwait ( ConfigureAwaitOptions . SuppressThrowing ) ;
778778
779779 if ( cancellationToken . IsCancellationRequested )
0 commit comments