private void SignalConsumerForWork(MySession mySession) { mySession.ProducerThread = Thread.CurrentThread; mySession.TaskQIsEmtpty = false; mySession.HasWaitingProducer = false; UpdateMySession(mySession); Monitor.PulseAll(mySession); }
/// <summary> /// Task Queue must be updated if queue is produced. /// </summary> /// <param name="mySession"></param> private void UpdateMySession(MySession mySession) { Application.Lock(); ConcurrentDictionary<string, MySession> applicationSessions = Application["MTA-Sessions"] as ConcurrentDictionary<string, MySession>; if (applicationSessions != null) { applicationSessions[mySession.SessionId] = mySession; } Application["MTA-Sessions"] = applicationSessions; Application.UnLock(); }
/// <summary> /// Task Queue must be updated if queue is produced. /// </summary> /// <param name="mySession"></param> /// <param name="isEmpty"></param> private void UpdateTaskQReadyStatus(MySession mySession, bool isEmpty) { Application.Lock(); ConcurrentDictionary<string, MySession> applicationSessions = Application["MTA-Sessions"] as ConcurrentDictionary<string, MySession>; if (applicationSessions != null) applicationSessions[mySession.SessionId].TaskQIsEmtpty = isEmpty;//there are 30 tasks to do OR not... Application["MTA-Sessions"] = applicationSessions; Application.UnLock(); }