This question让我考虑了.NET等效项。 Thread类的ThreadState属性有什么值?在此代码示例中:

if (someThread.ThreadState != System.Threading.ThreadState.Running)
{
    someThread = new Thread(SomeMethod);
    someThread.Start();
}
someThreadThreadState属性可以在Runningif内部的代码之间切换到if,对吗?

最佳答案

ThreadState是最初看起来很有前途的奇妙属性之一,但是一旦您深入研究函数的方式,就会发现它几乎完全没有用。

ThreadState的主要问题是枚举名称非常容易引起误解。例如拿ThreadState.Runnning。这是一个非常糟糕的名称,因为它实际上并不指示线程正在运行。相反,它指示线程在最近的某个时刻正在运行,并且可能会或可能不会一直在运行。

这看似微不足道,但事实并非如此。从字面上取枚举的名称并生成看起来非常漂亮的代码确实很容易。但是,正如代码读取的一样,它通常基于有缺陷的逻辑。

我实际上仅将此属性用于调试目的。

此值在非常有限的一组场景中很有用,在这种情况下,您可以使用其他机制来控制正在查看的线程。如锁或WaitHandle。但是通常最好使用另一种形式的同步,而不是依赖于此属性。

10-04 10:13