internal IAsyncResult BeginStartMonitoringSession(MonitoringChannel channel, Agent agentToMonitor, AsyncCallback userCallback, object state) { StartMonitoringSessionAsyncResult asyncResult = new StartMonitoringSessionAsyncResult(channel, agentToMonitor, this, userCallback, state); bool Process = false; lock (_syncRoot) { if (_state == SupervisorSessionState.GeneralAgentActivityTracking) { this.UpdateState(SupervisorSessionState.JoiningCustomerSession); Process = true; } else { throw new InvalidOperationException("AcdSupervisorSession is not in the correct state to start monitoring an agent"); } } if (Process) { ThreadPool.QueueUserWorkItem((waitState) => { var tempAr = waitState as StartMonitoringSessionAsyncResult; tempAr.Process(); }, asyncResult); } return(asyncResult); }
internal void EndStartMonitoringSession(IAsyncResult ar) { StartMonitoringSessionAsyncResult asyncResult = ar as StartMonitoringSessionAsyncResult; asyncResult.EndInvoke(); }