Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ReadAsync()

Reimplemented in System.Threading.Channels.BoundedChannel< T >.BoundedChannelReader, System.Threading.Channels.SingleConsumerUnboundedChannel< T >.UnboundedChannelReader, and System.Threading.Channels.UnboundedChannel< T >.UnboundedChannelReader.

Definition at line 34 of file ChannelReader.cs.

35 {
36 if (cancellationToken.IsCancellationRequested)
37 {
39 }
40 try
41 {
42 if (TryRead(out var item))
43 {
44 return new ValueTask<T>(item);
45 }
46 }
47 catch (Exception ex) when (!(ex is ChannelClosedException) && !(ex is OperationCanceledException))
48 {
49 return new ValueTask<T>(Task.FromException<T>(ex));
50 }
51 return ReadAsyncCore(cancellationToken);
52 async ValueTask<T> ReadAsyncCore(CancellationToken ct)
53 {
54 T item2;
55 do
56 {
58 {
59 throw new ChannelClosedException();
60 }
61 }
62 while (!TryRead(out item2));
63 return item2;
64 }
65 }
ValueTask< bool > WaitToReadAsync(CancellationToken cancellationToken=default(CancellationToken))
bool TryRead([MaybeNullWhen(false)] out T item)
static Task FromException(Exception exception)
Definition Task.cs:3341
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363

References System.cancellationToken, System.Threading.Tasks.Task< TResult >.FromCanceled(), System.Threading.Tasks.Task< TResult >.FromException(), System.item, System.Threading.Channels.ChannelReader< T >.TryRead(), and System.Threading.Channels.ChannelReader< T >.WaitToReadAsync().