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

◆ DisposeAsync()

override ValueTask System.Text.TranscodingStream.DisposeAsync ( )
inlinevirtual

Reimplemented from System.IO.Stream.

Definition at line 99 of file TranscodingStream.cs.

100 {
101 if (_innerStream == null)
102 {
103 return default(ValueTask);
104 }
105 ArraySegment<byte> pendingData2 = FinalFlushWriteBuffers();
106 if (pendingData2.Count == 0)
107 {
108 Stream innerStream = _innerStream;
109 _innerStream = null;
110 if (!_leaveOpen)
111 {
112 return innerStream.DisposeAsync();
113 }
114 return default(ValueTask);
115 }
116 return DisposeAsyncCore(pendingData2);
117 async ValueTask DisposeAsyncCore(ArraySegment<byte> pendingData)
118 {
119 Stream innerStream2 = _innerStream;
120 _innerStream = null;
121 await innerStream2.WriteAsync(pendingData.AsMemory()).ConfigureAwait(continueOnCapturedContext: false);
122 if (!_leaveOpen)
123 {
124 await innerStream2.DisposeAsync().ConfigureAwait(continueOnCapturedContext: false);
125 }
126 }
127 }
Task WriteAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:914
virtual ValueTask DisposeAsync()
Definition Stream.cs:654
ArraySegment< byte > FinalFlushWriteBuffers()
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226
ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext)
Definition ValueTask.cs:312

References System.Text.TranscodingStream._innerStream, System.Text.TranscodingStream._leaveOpen, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.Threading.Tasks.ValueTask< TResult >.ConfigureAwait(), System.ArraySegment< T >.Count, System.IO.Stream.DisposeAsync(), System.Text.TranscodingStream.FinalFlushWriteBuffers(), and System.IO.Stream.WriteAsync().