2011-11-03 37 views
3

假设我有一个线程对象的引用,如:如何确定一个Thread对象是否是.NET中的当前线程?

System.Threading.Thread thread; 

如果我想,以确定当前线程是否是此对象表示,应该在下面的代码中使用?

bool currentThread = (thread.ManagedThreadId == Thread.CurrentThread.ManagedThreadId); 

我敢肯定,这将工作正常,但似乎很奇怪,不会有一个更直接的方法来检查这一点。有一个吗?

回答

9

只需使用Thread.CurrentThread

bool currentThread = (thread == Thread.CurrentThread); 
+0

酷。我想知道这是否会奏效。我问,因为我看到别人的代码比较线程ID,这使我认为可能有多个与给定线程相关的线程对象(可能是由.NET库内部维护的线程对象)。 – Jeremy

+1

@Jeremy在阅读这个问题时,这也是我关心的问题。有没有一种情况下可以创建一个线程,其中'线程'以某种方式引用了一个不能被'Thread.CurrentThread'识别的实例? –

+0

理论上,.NET不必将.NET线程与操作系统线程相匹配,但AFAIK当前的实现以这种方式工作,但文档确实强调了您不应该依赖这种情况的观点。 –

相关问题