/// <summary> /// /// </summary> /// <param name="methodInfo"></param> public QueueWaitResult AddToWaitInvoke(QueueMethodInfo methodInfo) { lock (Locker) { RemoveWaitTimeoutItems(); if (IsLimitExpired) { return(QueueWaitResult.LimitExpired()); } methodInfo.WaitInvokeBeginDateTime = DateTime.Now; QueueMethodInfos.Add(methodInfo); return(new QueueWaitResult()); } }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public T Invoke <T>(QueueMethodInfo methodInfo) { lock (Locker) { RemoveWaitBeforeInvoke(); if (IsLimitExpired) { methodInfo.State = QueueState.LimitExpired; } methodInfo.Owner = this; QueueMethodInfos.Add(methodInfo); CheckAndRun(); } return(methodInfo.Invoke <T>()); }