diff --git a/trunk/CHANGELOG.txt b/trunk/CHANGELOG.txt index 49d1bf170..fe4c8e6e3 100644 --- a/trunk/CHANGELOG.txt +++ b/trunk/CHANGELOG.txt @@ -2,8 +2,8 @@ Process Hacker 1.2.3.5 * Added handle viewing/closing support - * Added handle finder * Fixed random crashes + * Doesn't update threads/handles unless viewing them 1.2.3.0 * Fixed incorrect messages about "new services" (actually fixed this time) diff --git a/trunk/ProcessHacker/Forms/HackerWindow.Designer.cs b/trunk/ProcessHacker/Forms/HackerWindow.Designer.cs index e12eba6b4..9183ea39f 100644 --- a/trunk/ProcessHacker/Forms/HackerWindow.Designer.cs +++ b/trunk/ProcessHacker/Forms/HackerWindow.Designer.cs @@ -1119,6 +1119,7 @@ this.tabControl.SelectedIndex = 0; this.tabControl.Size = new System.Drawing.Size(438, 350); this.tabControl.TabIndex = 5; + this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged); // // tabProcess // diff --git a/trunk/ProcessHacker/Forms/HackerWindow.cs b/trunk/ProcessHacker/Forms/HackerWindow.cs index aeea67cd6..688e050e7 100644 --- a/trunk/ProcessHacker/Forms/HackerWindow.cs +++ b/trunk/ProcessHacker/Forms/HackerWindow.cs @@ -3055,12 +3055,16 @@ namespace ProcessHacker threadP = new ThreadProvider(processSelectedPID); listThreads.Provider = threadP; threadP.Interval = Properties.Settings.Default.RefreshInterval; - threadP.Enabled = true; + + if (tabControl.SelectedTab == tabThreads) + threadP.Enabled = true; handleP = new HandleProvider(processSelectedPID); listHandles.Provider = handleP; handleP.Interval = Properties.Settings.Default.RefreshInterval; - handleP.Enabled = true; + + if (tabControl.SelectedTab == tabHandles) + handleP.Enabled = true; if (Properties.Settings.Default.UseToolhelpModules) UpdateModuleInfoToolhelp(); @@ -3268,5 +3272,25 @@ namespace ProcessHacker t.Priority = ThreadPriority.Lowest; t.Start(); } + + private void tabControl_SelectedIndexChanged(object sender, EventArgs e) + { + if (threadP != null) + threadP.Enabled = false; + + if (handleP != null) + handleP.Enabled = false; + + if (tabControl.SelectedTab == tabThreads) + { + if (threadP != null) + threadP.Enabled = true; + } + else if (tabControl.SelectedTab == tabHandles) + { + if (handleP != null) + handleP.Enabled = true; + } + } } }