예제 #1
0
        public static void Lock(this ConditionModerator condition, IMessageCommunication bus, TimeSpan timeout)
        {
            var token = _tasks[condition.Name].Token;

            Task.Run(() =>
            {
                condition.Locked = true;
                Task.Delay(timeout, token);
                if (!token.IsCancellationRequested)
                {
                    bus.Handle <ModeratorTimeoutOperation>();
                }

                condition.Locked = false;
            }, token);
        }
예제 #2
0
 public static bool IsLock(this ConditionModerator condition)
 {
     return(condition.Locked);
 }
예제 #3
0
 public static void UnLock(this ConditionModerator condition)
 {
     _tasks[condition.Name].Cancel();
 }