Пример #1
0
 internal static void ReleaseClient(RdpClient client)
 {
     try
     {
         client._server = null;
         Program.TheForm.RemoveFromClientPanel(client.Control);
     }
     finally
     {
         AxHost rdpClient = client._rdpClient5;
         if (rdpClient != null)
         {
             client._rdpClient5 = null;
             rdpClient.Dispose();
         }
         rdpClient = client._rdpClient6;
         if (rdpClient != null)
         {
             client._rdpClient6 = null;
             rdpClient.Dispose();
         }
         rdpClient = client._rdpClient7;
         if (rdpClient != null)
         {
             client._rdpClient7 = null;
             rdpClient.Dispose();
         }
         rdpClient = client._rdpClient8;
         if (rdpClient != null)
         {
             client._rdpClient8 = null;
             rdpClient.Dispose();
         }
     }
 }
Пример #2
0
 public void Connect(string rdpIP)
 {
     try
     {
         RDPSetSettings();
     }
     catch (Exception ex)
     {
         if (parent.Controls.Contains(rdpControl))
         {
             parent.Controls.Remove(rdpControl);
         }
         rdpControl.Dispose();
         rdpControl = null;
         Log.Error("Setting the RDP client properties caused an exception.", ex);
     }
     RDPConnect(rdpIP, size.Width, size.Height);
 }
Пример #3
0
 public void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             if (rdpControl != null)
             {
                 // We need to dispose the rdp control. However, doing it immediately (in the control's own
                 // OnDisconnected event) will cause a horrible crash. Instead, start a timer that will
                 // call the dispose method on the GUI thread at the next available opportunity. CA-12902
                 Timer t = new Timer();
                 t.Tick += delegate
                 {
                     try
                     {
                         Log.Debug("RdpClient Dispose(): rdpControl.Dispose() in delegate");
                         rdpControl.Dispose();
                     }
                     catch (Exception)
                     {
                         // We often get NullReferenceException here
                     }
                     t.Stop();
                     RdpCleanupTimers.Remove(t);
                     Log.Debug("RdpClient Dispose(): Timer stopped and removed in delegate");
                 };
                 t.Interval = 1;
                 RdpCleanupTimers.Add(t);
                 Log.DebugFormat("RdpClient Dispose(): Start timer (timers count {0})", RdpCleanupTimers.Count);
                 t.Start();
             }
             else
             {
                 Log.Debug("RdpClient Dispose(): rdpControl == null");
             }
         }
         rdpControl = null;
         Log.Debug("RdpClient Dispose(): disposed = true");
         disposed = true;
     }
 }