コード例 #1
0
ファイル: AcdMusicOnHoldServer.cs プロジェクト: mujiansu/Lync
        internal IAsyncResult BeginShutDown(AsyncCallback userCallback, object state)
        {
            ShutDownAsyncResult ar = new ShutDownAsyncResult(this, userCallback, state);
            bool firstTime         = false;

            lock (_syncRoot)
            {
                if (_state < MusicOnHoldServerState.Terminating)
                {
                    firstTime = true;
                    this.UpdateState(MusicOnHoldServerState.Terminating);
                }
                else if (_state == MusicOnHoldServerState.Terminating)
                {
                    _listOfShutDownAsyncResults.Add(ar);
                }
                else if (_state == MusicOnHoldServerState.Terminated)
                {
                    ar.SetAsCompleted(null, true);
                }
            }

            if (firstTime)
            {
                ThreadPool.QueueUserWorkItem((waitState) =>
                {
                    var tempAr = waitState as ShutDownAsyncResult;
                    tempAr.Process();
                }, ar);
            }

            return(ar);
        }
コード例 #2
0
ファイル: AcdMusicOnHoldServer.cs プロジェクト: mujiansu/Lync
        internal void EndShutDown(IAsyncResult ar)
        {
            ShutDownAsyncResult result = ar as ShutDownAsyncResult;

            result.EndInvoke();
        }