From 73bcbf1bfb7407947dffa87dcdb7609aceac7752 Mon Sep 17 00:00:00 2001 From: wj32 Date: Mon, 13 Jul 2009 02:48:44 +0000 Subject: [PATCH] thread list is more responsive git-svn-id: svn://svn.code.sf.net/p/processhacker/code@1594 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- trunk/CHANGELOG.txt | 1 + trunk/ProcessHacker/Components/ThreadList.cs | 24 ++----------------- .../ProcessHacker/Providers/ThreadProvider.cs | 14 ++++++++++- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/trunk/CHANGELOG.txt b/trunk/CHANGELOG.txt index 52899a553..85908d17a 100644 --- a/trunk/CHANGELOG.txt +++ b/trunk/CHANGELOG.txt @@ -4,6 +4,7 @@ Process Hacker * NEW/IMPROVED: * Better process window exit status display * Better handle granted access display + * Thread list is more responsive 1.3.9.0 * NEW/IMPROVED: diff --git a/trunk/ProcessHacker/Components/ThreadList.cs b/trunk/ProcessHacker/Components/ThreadList.cs index c763efb35..4aa73e7d8 100644 --- a/trunk/ProcessHacker/Components/ThreadList.cs +++ b/trunk/ProcessHacker/Components/ThreadList.cs @@ -125,8 +125,6 @@ namespace ProcessHacker.Components private void listThreads_SelectedIndexChanged(object sender, System.EventArgs e) { - this.Cursor = Cursors.WaitCursor; - if (listThreads.SelectedItems.Count == 1) { try @@ -134,7 +132,6 @@ namespace ProcessHacker.Components int tid = int.Parse(listThreads.SelectedItems[0].Name); var thread = Windows.GetProcessThreads(_pid)[tid]; ProcessThread processThread = null; - string fileName; try { @@ -143,23 +140,8 @@ namespace ProcessHacker.Components catch { } - if (!_provider.Symbols.Busy) - { - try - { - _provider.Symbols.GetSymbolFromAddress(_provider.Dictionary[tid].StartAddressI.ToUInt64(), out fileName); - fileModule.Text = fileName; - fileModule.Enabled = true; - } - catch - { - fileModule.Enabled = false; - } - } - else - { - fileModule.Enabled = false; - } + fileModule.Text = _provider.Dictionary[tid].FileName; + fileModule.Enabled = !string.IsNullOrEmpty(fileModule.Text); if (processThread != null) { @@ -210,8 +192,6 @@ namespace ProcessHacker.Components if (this.SelectedIndexChanged != null) this.SelectedIndexChanged(sender, e); - - this.Cursor = Cursors.Default; } private void ThreadList_KeyDown(object sender, KeyEventArgs e) diff --git a/trunk/ProcessHacker/Providers/ThreadProvider.cs b/trunk/ProcessHacker/Providers/ThreadProvider.cs index 40919d3fd..1e62930ec 100644 --- a/trunk/ProcessHacker/Providers/ThreadProvider.cs +++ b/trunk/ProcessHacker/Providers/ThreadProvider.cs @@ -51,6 +51,7 @@ namespace ProcessHacker public string Priority; public IntPtr StartAddressI; public string StartAddress; + public string FileName; public SymbolResolveLevel StartAddressLevel; public KWaitReason WaitReason; public bool IsGuiThread; @@ -65,6 +66,7 @@ namespace ProcessHacker { public int Tid; public string Symbol; + public string FileName; public SymbolResolveLevel ResolveLevel; } @@ -97,6 +99,7 @@ namespace ProcessHacker if (message.Symbol != null) { this.Dictionary[message.Tid].StartAddress = message.Symbol; + this.Dictionary[message.Tid].FileName = message.FileName; this.Dictionary[message.Tid].StartAddressLevel = message.ResolveLevel; this.Dictionary[message.Tid].JustResolved = true; } @@ -276,7 +279,16 @@ namespace ProcessHacker try { - result.Symbol = _symbols.GetSymbolFromAddress(startAddress, out result.ResolveLevel); + SymbolFlags flags; + string fileName; + + result.Symbol = _symbols.GetSymbolFromAddress( + startAddress, + out result.ResolveLevel, + out flags, + out fileName + ); + result.FileName = fileName; _messageQueue.Enqueue(result); } catch