Example #1
0
        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);
        }
Example #2
0
        internal void EndStartMonitoringSession(IAsyncResult ar)
        {
            StartMonitoringSessionAsyncResult asyncResult = ar as StartMonitoringSessionAsyncResult;

            asyncResult.EndInvoke();
        }