.net线程挂起的方法

nk_maquan 2010-07-13 12:16:19
目前在做项目的时候需要获取一个线程的调用栈,实现如下:

public static StackTrace GetThreadStack(Thread thread)
{
thread.Suspend();
StackTrace trace = new StackTrace(thread, true);
thread.Resume();
return trace;
}

现在有两个问题:
一、Thread.Suspend()和Thread.Resume()已经不被推荐使用(因为在涉及共享资源时容易死锁),所以在编译时会有warning,而本人对warning相当反感
二、StackTrace在执行构造函数时必须要求指定线程处于挂起状态

所以想听听高手们有没有什么更好的解决方案或其它方式挂起指定线程。
...全文
231 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nk_maquan 2010-07-14
  • 打赏
  • 举报
回复
再顶顶,有没有高手指点一下啊
liuyilin999 2010-07-13
  • 打赏
  • 举报
回复
采用线程同步代替
nk_maquan 2010-07-13
  • 打赏
  • 举报
回复
自动顶顶
nk_maquan 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cgabriel 的回复:]
挂起是多余的,锁定就是


C# code


object obj = new object();
lock(obj)
{
StackTrace trace = new StackTrace(thread, true);
}
[/Quote]
是要将指定线程thread挂起才能通过StackTrace(thread, true);获取其调用栈。lock只能挂起当前线程了。
mayonglong 2010-07-13
  • 打赏
  • 举报
回复
lock(。。。)
{}
CGabriel 2010-07-13
  • 打赏
  • 举报
回复
挂起是多余的,锁定就是



object obj = new object();
lock(obj)
{
StackTrace trace = new StackTrace(thread, true);
}

17,747

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧