File tree 1 file changed +7
-15
lines changed
1 file changed +7
-15
lines changed Original file line number Diff line number Diff line change @@ -20,29 +20,21 @@ public Task WaitAsync(CancellationToken cancellationToken = default)
20
20
return m_tcs . Task ;
21
21
}
22
22
23
+ private async Task < bool > Delay ( int milliseconds )
24
+ {
25
+ await Task . Delay ( milliseconds ) ;
26
+ return false ;
27
+ }
28
+
23
29
public Task < bool > WaitAsync ( int milliseconds , CancellationToken cancellationToken = default )
24
30
{
25
31
var tcs = m_tcs ;
26
32
27
33
cancellationToken . Register (
28
34
s => ( ( TaskCompletionSource < bool > ) s ) . TrySetCanceled ( ) , tcs ) ;
29
35
30
- var cancellationTokenSource = new CancellationTokenSource ( ) ;
31
- cancellationTokenSource . CancelAfter ( milliseconds ) ;
32
- cancellationTokenSource . Token . Register (
33
- s =>
34
- {
35
- var l_tcs = ( TaskCompletionSource < bool > ) s ;
36
36
37
- if ( ! l_tcs . Task . IsCanceled )
38
- {
39
- l_tcs . TrySetResult ( false ) ;
40
- }
41
-
42
- cancellationTokenSource . Dispose ( ) ;
43
- } , tcs ) ;
44
-
45
- return m_tcs . Task ;
37
+ return Task . WhenAny ( m_tcs . Task , Delay ( milliseconds ) ) . Result ;
46
38
}
47
39
48
40
public void Set ( )
You can’t perform that action at this time.
0 commit comments