private void OnContextCreated(IntPtr frgContext) { _frgContext = frgContext; if (_exitError != null) { FreeRdpGlue.Disconnect(_frgContext); return; } }
private void StartIngressThread() { _inputThread = new Thread(() => { try { while (_running) { if (!_channel.ReadDelimited(out RdpMessage rdpMessage)) { _running = false; continue; } Console.WriteLine($"XXX {rdpMessage.MessageCase}"); switch (rdpMessage.MessageCase) { case RdpMessage.MessageOneofCase.VerifyCertificateResult: _rdpVerifyCertificateResultMessage.Set(rdpMessage.VerifyCertificateResult); break; case RdpMessage.MessageOneofCase.AuthenticateResult: _rdpAuthenticateResultMessage.Set(rdpMessage.AuthenticateResult); break; case RdpMessage.MessageOneofCase.Disconnect: FreeRdpGlue.Disconnect(_frgContext); break; case RdpMessage.MessageOneofCase.SessionEnd: _running = false; break; } } } catch (Exception e) { _exitError = e; if (_frgContext != IntPtr.Zero) { FreeRdpGlue.Disconnect(_frgContext); } } }); _inputThread.Start(); }