作者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