Exemplo n.º 1
0
        public int Disconnect()
        {
            try
            {
                OnDisconnect();

                if (_ConnectedPin != null)
                {
                    _ConnectedPin.BeginFlush();
                    //_ConnectedPin.EndOfStream(); // deadlock - dont do this.
                    _ConnectedPin.Disconnect();
                    _ConnectedPin.EndFlush();
                }

                if (_ConnectedPin != null &&
                    Marshal.IsComObject(_ConnectedPin))
                {
                    GC.ReRegisterForFinalize(_ConnectedPin);
                    Marshal.FinalReleaseComObject(_ConnectedPin);
                }

                _ConnectedPin = null;
            }
            catch (Exception x)
            {
                Debug.WriteLine("Failed to disconnect pin " + x);
            }

            return((int)HRESULT.S_OK);            // Disconnect must not fail
        }