有没有办法检查someObj.someMethod()
是否在创建someObj
的同一个线程上执行?如果我搞砸某些并发约束,这可以在以后节省调试问题。
答案 0 :(得分:3)
唯一的方法是在创建时存储thread-id。在.NET 4.5上:
readonly int ownerThreadId;
public SomeType() {
ownerThreadId = Environment.CurrentManagedThreadId;
}
然后检查someMethod
中的相同字词。
请注意,在其他框架版本上,您可能需要:
ownerThreadId = Thread.CurrentThread.ManagedThreadId;
代替。