This question让我考虑了.NET等效项。 Thread类的ThreadState
属性有什么值?在此代码示例中:
if (someThread.ThreadState != System.Threading.ThreadState.Running)
{
someThread = new Thread(SomeMethod);
someThread.Start();
}
someThread
的ThreadState
属性可以在Running
和if
内部的代码之间切换到if
,对吗? 最佳答案
ThreadState是最初看起来很有前途的奇妙属性之一,但是一旦您深入研究函数的方式,就会发现它几乎完全没有用。
ThreadState的主要问题是枚举名称非常容易引起误解。例如拿ThreadState.Runnning。这是一个非常糟糕的名称,因为它实际上并不指示线程正在运行。相反,它指示线程在最近的某个时刻正在运行,并且可能会或可能不会一直在运行。
这看似微不足道,但事实并非如此。从字面上取枚举的名称并生成看起来非常漂亮的代码确实很容易。但是,正如代码读取的一样,它通常基于有缺陷的逻辑。
我实际上仅将此属性用于调试目的。
此值在非常有限的一组场景中很有用,在这种情况下,您可以使用其他机制来控制正在查看的线程。如锁或WaitHandle。但是通常最好使用另一种形式的同步,而不是依赖于此属性。