OSDN Git Service

WinGui:
authorsr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sat, 28 Nov 2009 23:45:51 +0000 (23:45 +0000)
committersr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sat, 28 Nov 2009 23:45:51 +0000 (23:45 +0000)
- Cleanly close the ActivityWindow so that HandBrake.exe does not remain active after the main application window has been closed.

git-svn-id: svn://localhost/HandBrake/trunk@2990 b64f7644-9d1e-0410-96f1-a4d463321fa5

win/C#/frmActivityWindow.cs
win/C#/frmMain.cs

index f909abc..af7b621 100644 (file)
@@ -24,6 +24,8 @@ namespace Handbrake
         private static int _position;\r
         private static string _lastMode;\r
         private static string _currentMode;\r
+        private Thread monitor;\r
+        private Boolean kilLThread;\r
 \r
         public frmActivityWindow()\r
         {\r
@@ -32,7 +34,9 @@ namespace Handbrake
         private void NewActivityWindow_Load(object sender, EventArgs e)\r
         {\r
             SetScanMode();\r
-            Thread monitor = new Thread(LogMonitor);\r
+            monitor = new Thread(LogMonitor);\r
+            _position = 0;\r
+            kilLThread = false;\r
 \r
             try\r
             {\r
@@ -48,6 +52,9 @@ namespace Handbrake
         {\r
             while (true)\r
             {\r
+                if (!IsHandleCreated || kilLThread) // break out the thread if the window has been disposed.\r
+                    break;\r
+\r
                 // Perform a reset if require.\r
                 // If we have switched to a different log file, we want to start from the beginning.\r
                 if (SetLogFile != _lastMode)\r
@@ -70,7 +77,7 @@ namespace Handbrake
                         break;\r
                 }\r
 \r
-                Thread.Sleep(1000);\r
+                Thread.Sleep(750);\r
             }\r
         }\r
         private StringBuilder ReadFile(string file)\r
@@ -197,7 +204,7 @@ namespace Handbrake
             {\r
                 MessageBox.Show("PrintLogHeader(): Exception: \n" + exc);\r
             }\r
-            \r
+\r
         }\r
 \r
         #region Public\r
@@ -293,8 +300,10 @@ namespace Handbrake
 \r
         protected override void OnClosing(CancelEventArgs e)\r
         {\r
+            kilLThread = true;\r
+            monitor.Join();\r
             e.Cancel = true;\r
-            this.Hide();\r
+            this.Dispose();\r
             base.OnClosing(e);\r
         }\r
     }\r
index d74d8ef..58ad360 100644 (file)
@@ -800,7 +800,7 @@ namespace Handbrake
         }\r
         private void btn_ActivityWindow_Click(object sender, EventArgs e)\r
         {\r
-            if (ActivityWindow == null)\r
+            if (ActivityWindow == null || !ActivityWindow.IsHandleCreated)\r
                 ActivityWindow = new frmActivityWindow();\r
 \r
             if (encodeQueue.isEncoding)\r