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

◆ TryAddToAnyCore()

static int System.Collections.Concurrent.BlockingCollection< T >.TryAddToAnyCore ( BlockingCollection< T >[] collections,
T item,
int millisecondsTimeout,
CancellationToken externalCancellationToken )
inlinestaticprivate

Definition at line 407 of file BlockingCollection.cs.

408 {
410 int num = millisecondsTimeout;
411 uint startTime = 0u;
412 if (millisecondsTimeout != -1)
413 {
414 startTime = (uint)Environment.TickCount;
415 }
417 if (num2 > -1)
418 {
419 return num2;
420 }
423 while (millisecondsTimeout == -1 || num >= 0)
424 {
425 num2 = -1;
427 {
428 handles.Add(cancellationTokenSource.Token.WaitHandle);
429 num2 = WaitHandle.WaitAny(handles.ToArray(), num);
430 handles.RemoveAt(handles.Count - 1);
431 if (cancellationTokenSource.IsCancellationRequested)
432 {
433 externalCancellationToken.ThrowIfCancellationRequested();
435 }
436 }
437 if (num2 == 258)
438 {
439 return -1;
440 }
442 {
443 return num2;
444 }
445 if (millisecondsTimeout != -1)
446 {
448 }
449 }
450 return -1;
451 }
static int TryAddToAnyFast(BlockingCollection< T >[] collections, T item)
static int UpdateTimeOut(uint startTime, int originalWaitMillisecondsTimeout)
static void ValidateCollectionsArray(BlockingCollection< T >[] collections, bool isAddOperation)
static List< WaitHandle > GetHandles(BlockingCollection< T >[] collections, CancellationToken externalCancellationToken, bool isAddOperation, out CancellationToken[] cancellationTokens)
void Add(TKey key, TValue value)
static string BlockingCollection_CantAddAnyWhenCompleted
Definition SR.cs:18
Definition SR.cs:7
static CancellationTokenSource CreateLinkedTokenSource(CancellationToken token1, CancellationToken token2)
static int WaitAny(WaitHandle[] waitHandles, int millisecondsTimeout)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.SR.BlockingCollection_CantAddAnyWhenCompleted, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Threading.CancellationTokenSource.CreateLinkedTokenSource(), System.Collections.Concurrent.BlockingCollection< T >.GetHandles(), System.item, System.millisecondsTimeout, System.Environment.TickCount, System.Collections.Concurrent.BlockingCollection< T >.TryAdd(), System.Collections.Concurrent.BlockingCollection< T >.TryAddToAnyFast(), System.Collections.Concurrent.BlockingCollection< T >.UpdateTimeOut(), System.Collections.Concurrent.BlockingCollection< T >.ValidateCollectionsArray(), and System.Threading.WaitHandle.WaitAny().

Referenced by System.Collections.Concurrent.BlockingCollection< T >.TryAddToAny(), System.Collections.Concurrent.BlockingCollection< T >.TryAddToAny(), and System.Collections.Concurrent.BlockingCollection< T >.TryAddToAny().