コード例 #1
0
        internal override void CloseAsync()
        {
            bool flag = false;

            lock (this.syncObject)
            {
                if (this.isClosed)
                {
                    return;
                }
                if (!this.isCreateCallbackReceived)
                {
                    this.isClosePending = true;
                    return;
                }
                this.isClosed = true;
                if (IntPtr.Zero == this.wsManShellOperationHandle)
                {
                    flag = true;
                }
            }
            base.CloseAsync();
            if (flag)
            {
                try
                {
                    this.RaiseCloseCompleted();
                }
                finally
                {
                    WSManClientSessionTransportManager.RemoveSessionTransportManager(this.sessionContextID);
                }
            }
            else
            {
                BaseTransportManager.ETWTracer.AnalyticChannel.WriteInformation(PSEventId.WSManCloseShell, PSOpcode.Disconnect, PSTask.None, (object)this.RunspacePoolInstanceId);
                this.closeSessionCompleted = new WSManNativeApi.WSManShellAsync(new IntPtr(this.sessionContextID), WSManClientSessionTransportManager.sessionCloseCallback);
                WSManNativeApi.WSManCloseShell(this.wsManShellOperationHandle, 0, (IntPtr)this.closeSessionCompleted);
            }
        }
コード例 #2
0
 internal override void PrepareForRedirection()
 {
     this.closeSessionCompleted = new WSManNativeApi.WSManShellAsync(new IntPtr(this.sessionContextID), WSManClientSessionTransportManager.sessionCloseCallback);
     WSManNativeApi.WSManCloseShell(this.wsManShellOperationHandle, 0, (IntPtr)this.closeSessionCompleted);
 }