有没有办法在 someObj.someMethod()
中检查它是否在创建 someObj
的同一线程上执行?如果我搞砸了某些并发约束,这可以让我在以后的调试中省去麻烦。
最佳答案
唯一的方法是在创建线程时存储线程 ID。在 .NET 4.5 上:
readonly int ownerThreadId;
public SomeType() {
ownerThreadId = Environment.CurrentManagedThreadId;
}
然后在 someMethod
中检查同一个术语。
请注意,在其他框架版本上,您可能需要:
ownerThreadId = Thread.CurrentThread.ManagedThreadId;
相反。
关于c# - 检查当前线程是否等于构造对象的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892935/