/// <summary> /// 스택에서 요소를 꺼냄, 꺼낼 요소가 없으면 기다립니다. /// </summary> /// <returns>요소</returns> public virtual T Pop() { if (IsDebugEnabled) { log.Debug("Stack에서 요소를 꺼냅니다. 꺼낼 요소가 없으면 기다립니다..."); } lock (_syncLock) { while (InnerStack.Count == 0) { Monitor.Wait(_syncLock); } return(InnerStack.Pop()); } }
/// <summary> /// 스텍에서 요소를 꺼내본다. 꺼낼 요소가 없으면 False를 반환하고, item 은 default(T)가 설정된다. /// </summary> /// <param name="item">꺼낼 요소</param> /// <returns>꺼낼 요소가 없으면 False를 반환하고, item 은 default(T)가 설정된다.</returns> public virtual bool TryPop(out T item) { if (IsDebugEnabled) { log.Debug("스텍에서 요소를 꺼내본다. 꺼낼 요소가 없으면 기다리지 않고, False를 반환하고, item 은 default(T)가 설정된다."); } lock (_syncLock) { if (InnerStack.Count > 0) { item = InnerStack.Pop(); return(true); } item = default(T); return(false); } }