作者ctangel (改變 改變 改變)
看板C_Sharp
標題[問題] 用thread.ID取得Name和執行中的method
時間Wed Jul 7 14:26:52 2010
不好意思,我有個問題,谷哥找不到我要的答案,又剛大致掃了一下沒找到...就厚顏提問了
...
如果問題太...請小力鞭... ><
是這樣的, 我需要做一個介面作為監控server使用
監控內容用ListView列出該server的thread如下列幾毎項目:
1.ID
2.Name
3.Executing method
4.Location
5.Priority
6.Status
我先用 Process[] processList = Process.GetProcesses();
取得所有process後,再以
foreach (Process process in ProcessList)
{
if(process.ProcessName.StartsWith("XXXService"))
{
foreach (ProcessThread thread in process.Threads)
{
ListViewItem lvItem = new ListViewItem(thread.Id.ToString());
lvItem.SubItems.Add(""); => Name,要放thread name的,但我捉不到 ><
lvItem.SubItems.Add(""); => Executing Method,要放該thread執行中的method,
仍是捉不到
lvItem.SubItems.Add(""); => Location,要放該method的所在位置,因前兩項
做不出來,也無法試作><
lvItem.SubItems.Add(thread.CurrentPriority.ToString());
lvItem.SubItems.Add(thread.ThreadState.ToString());
lstThreadInformation.Items.Add(lvItem);
}
}
}
我想用thread id 找出 thread name 跟 executing method, 找不到可用的屬性
用谷哥找也沒找到可行的方案
顯然我在 C# 上的知識還很淺,以致無法很快的找出可解方法 QQ
所以只好來問問看大家,如果問得很笨,還請多多包涵^^;
十分感謝!!! m(^ ^)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.39.59.247
1F:→ optimist9266:Thread不是只有ID沒有Name嗎... 07/07 15:51
2F:→ optimist9266:他又不是Process 要Name幹麻 = = 07/07 15:51
3F:→ ctangel:ProcessThread只有ID,沒有Name, Thread 則是兩者都有 07/07 17:39
4F:→ ctangel:一個是System.Diagnostics.ProcessThread 另一個是System. 07/07 17:41
5F:→ ctangel:Threading.Thread 兩者不一樣,但若用Thread的ID可以對上 07/07 17:42
6F:→ ctangel:ProcessThread的ID,我目前在網路上找到的都只有這個對應方 07/07 17:42
7F:→ ctangel:法,但是要反方向的由ProcessThread的ID對應找到Thread就沒 07/07 17:43
8F:→ ctangel:有了><, 這就是令人苦惱的地方啊...>< 07/07 17:44
9F:→ ctangel:Name就我所知,平常可拿來外部強制結束或了解Thread狀態用 07/07 17:45
所以我的想法是列出系統中所有System.Threading.Thread的threads
再利用processthreads的id和threads相互比對,就可以拿到我要的了
但就是找不出列出所有threads的方法 @@
※ 編輯: ctangel 來自: 60.251.144.4 (07/07 17:49)
10F:→ optimist9266:MSDN論壇好像有類似的討論,但是我忘記在哪了... 07/07 18:21
11F:→ optimist9266:你可以去翻翻看,也是在C#板 07/07 18:21