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

◆ TryWrite()

override bool System.Threading.Channels.SingleConsumerUnboundedChannel< T >.UnboundedChannelWriter.TryWrite ( T item)
inline

Definition at line 209 of file SingleConsumerUnboundedChannel.cs.

210 {
213 do
214 {
215 asyncOperation = null;
217 lock (parent.SyncObj)
218 {
219 if (parent._doneWriting != null)
220 {
221 return false;
222 }
223 asyncOperation = parent._blockedReader;
224 if (asyncOperation != null)
225 {
226 parent._blockedReader = null;
227 }
228 else
229 {
230 parent._items.Enqueue(item);
231 asyncOperation2 = parent._waitingReader;
232 if (asyncOperation2 == null)
233 {
234 return true;
235 }
236 parent._waitingReader = null;
237 }
238 }
239 if (asyncOperation2 != null)
240 {
241 asyncOperation2.TrySetResult(item: true);
242 return true;
243 }
244 }
245 while (!asyncOperation.TrySetResult(item));
246 return true;
247 }

References System.Threading.Channels.SingleConsumerUnboundedChannel< T >.UnboundedChannelWriter._parent, and System.item.

Referenced by System.Threading.Channels.SingleConsumerUnboundedChannel< T >.UnboundedChannelWriter.WriteAsync().