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; } }); }