internal void SetStatus(ELoopStatus iTarget) { switch (iTarget) { //case ELoopStatus.Unknown: // break; case ELoopStatus.IsWaiting: { if (ThreadLocalInformation.GetUniqueID() != UniqueThreadID) { throw new ArgumentException(StringHelper.DefaultJoin("ThreadLocalInformation.GetUniqueID() != UniqueThreadID", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } switch (GetStatus()) { //case ELoopStatus.IsWaiting: // break; case ELoopStatus.Unknown: //break; //case ELoopStatus.IsInvoking: // break; //case ELoopStatus.IsStopping: // break; case ELoopStatus.IsPausing: _status = iTarget; break; //case ELoopStatus.IsStopped: // break; default: throw new ArgumentException(StringHelper.DefaultJoin("default:", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } } break; case ELoopStatus.IsInvoking: { switch (GetStatus()) { case ELoopStatus.Unknown: //break; case ELoopStatus.IsWaiting: //break; case ELoopStatus.IsPausing: //break; case ELoopStatus.IsStopping: _status = iTarget; break; case ELoopStatus.IsInvoking: break; //case ELoopStatus.IsStopped: // break; default: throw new ArgumentException(StringHelper.DefaultJoin("default:", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } } break; case ELoopStatus.IsPausing: { if (ThreadLocalInformation.GetUniqueID() == UniqueThreadID) { throw new ArgumentException(StringHelper.DefaultJoin("ThreadLocalInformation.GetUniqueID() == UniqueThreadID", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } switch (GetStatus()) { //case ELoopStatus.Unknown: // break; case ELoopStatus.IsWaiting: //break; case ELoopStatus.IsPausing: break; case ELoopStatus.IsInvoking: //break; case ELoopStatus.IsStopping: _status = iTarget; break; //case ELoopStatus.IsStopped: // break; default: throw new ArgumentException(StringHelper.DefaultJoin("default:", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } } break; case ELoopStatus.IsStopping: { if (ThreadLocalInformation.GetUniqueID() == UniqueThreadID) { throw new ArgumentException(StringHelper.DefaultJoin("ThreadLocalInformation.GetUniqueID() == UniqueThreadID", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } switch (GetStatus()) { //case ELoopStatus.Unknown: // break; case ELoopStatus.IsWaiting: //break; case ELoopStatus.IsInvoking: //break; case ELoopStatus.IsPausing: _status = iTarget; break; case ELoopStatus.IsStopping: break; //case ELoopStatus.IsStopped: // break; default: throw new ArgumentException(StringHelper.DefaultJoin("default:", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } } break; case ELoopStatus.IsStopped: { if (ThreadLocalInformation.GetUniqueID() != UniqueThreadID) { throw new ArgumentException(StringHelper.DefaultJoin("ThreadLocalInformation.GetUniqueID() != UniqueThreadID", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } switch (GetStatus()) { //case ELoopStatus.Unknown: // break; //case ELoopStatus.IsWaiting: // break; case ELoopStatus.IsInvoking: //break; case ELoopStatus.IsPausing: //break; case ELoopStatus.IsStopping: _status = iTarget; break; //case ELoopStatus.IsStopped: // break; default: throw new ArgumentException(StringHelper.DefaultJoin("default:", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } } break; default: throw new ArgumentException(StringHelper.DefaultJoin("default:", ThreadLocalInformation.GetUniqueID(), UniqueThreadID, iTarget, GetStatus())); } }
/// <summary> /// /// </summary> public LoopRecord() { UniqueThreadID = ThreadLocalInformation.GetUniqueID(); _status = ELoopStatus.Unknown; }