// ====================== /// <summary> /// Попробовать добавить элемент в очередь /// </summary> /// <param name="item">Элемент</param> /// <param name="localQueue">Локальная очередь потока (если есть)</param> /// <param name="forceGlobal">Обязательное добавление в глобальную очередь</param> /// <param name="timeout">Таймаут</param> /// <param name="token">Токен отмены</param> /// <returns>Удалось ли добавить</returns> public bool TryAdd(ThreadPoolWorkItem item, ThreadPoolLocalQueue localQueue, bool forceGlobal, int timeout, CancellationToken token) { TurboContract.Requires(item != null, conditionString: "item != null"); TurboContract.Assert(!_isDisposed, conditionString: "!_isDisposed"); if (localQueue != null && !forceGlobal) { bool added = false; try { } finally { added = localQueue.TryAddLocal(item); } if (added) { return(true); } } return(_globalQueue.TryAdd(item, timeout, token)); }