moved class declarations other than the main form below the main form's declaration...
[deb_libcec.git] / src / LibCecTray / ui / CECTray.cs
index 8df996ecc374d6e786f3a0f526bcc2e3c472949c..740033b386539f65670bf317872fbe0116c04fa1 100644 (file)
@@ -41,22 +41,10 @@ using LibCECTray.settings;
 using Microsoft.Win32;
 using System.Security.Permissions;
 using System.Runtime.InteropServices;
+using System.Threading;
 
 namespace LibCECTray.ui
 {
-  /// <summary>
-  /// The tab pages in this application
-  /// </summary>
-  internal enum ConfigTab
-  {
-    Configuration,
-    KeyConfiguration,
-    Tester,
-    Log,
-    WMC,
-    XBMC
-  }
-
   /// <summary>
   /// Main LibCecTray GUI
   /// </summary>
@@ -177,7 +165,8 @@ namespace LibCECTray.ui
       if (disposing)
       {
         Controller.CECActions.SuppressUpdates = true;
-        Controller.Close();
+        AsyncDisconnect dc = new AsyncDisconnect(Controller);
+        (new Thread(dc.Process)).Start();
       }
       if (disposing && (components != null))
       {
@@ -594,4 +583,32 @@ namespace LibCECTray.ui
       Controller.DisplayDialog(appConfig, false);
     }
   }
+
+  /// <summary>
+  /// The tab pages in this application
+  /// </summary>
+  internal enum ConfigTab
+  {
+    Configuration,
+    KeyConfiguration,
+    Tester,
+    Log,
+    WMC,
+    XBMC
+  }
+
+  class AsyncDisconnect
+  {
+    public AsyncDisconnect(CECController controller)
+    {
+      _controller = controller;
+    }
+
+    public void Process()
+    {
+      _controller.Close();
+    }
+
+    private CECController _controller;
+  }
 }