Beispiel #1
0
        public override void Dispose()
        {
            base.Dispose();

            Program.WriteLine("Dispose Remote Desktop...");

            var wasStreaming = _isStreaming;

            _isStreaming = false;

            Program.WriteLine("_isStreaming = false");

            lock (_streamComponentsLock)
            {
                if (!wasStreaming)
                {
                    _connection?.Dispose();
                    _screenCaptureService?.Dispose();
                }

                _cursorStreamCodec?.Dispose();
                _currentImageCompression?.Dispose();
            }

            Program.WriteLine("Remote Desktop disposed");
        }
        public override void Dispose()
        {
            base.Dispose();

            //important, else dead lock because this is UI thread and lock invokdes into UI thread -> block
            Task.Run(() =>
            {
                lock (_updateLock)
                {
                    _remoteConnection?.Dispose();
                    _streamCodec?.Dispose();
                    _cursorStreamCodec?.Dispose();
                    _isDisposed = true;
                }
            });
        }