检查当前线程是否等于构造对象的线程

时间:2012-10-15 09:38:34

标签: c#

有没有办法检查someObj.someMethod()是否在创建someObj的同一个线程上执行?如果我搞砸某些并发约束,这可以在以后节省调试问题。

1 个答案:

答案 0 :(得分:3)

唯一的方法是在创建时存储thread-id。在.NET 4.5上:

readonly int ownerThreadId;
public SomeType() {
    ownerThreadId = Environment.CurrentManagedThreadId;
}

然后检查someMethod中的相同字词。

请注意,在其他框架版本上,您可能需要:

ownerThreadId = Thread.CurrentThread.ManagedThreadId;

代替。