以下代码将 ThreadState 剥离为四个最有用的值之一:Unstarted、Running、WaitSleepJoin 和 Stopped:
public static ThreadState SimpleThreadState (ThreadState ts)
{
return ts & (ThreadState.Unstarted |
ThreadState.WaitSleepJoin |
ThreadState.Stopped);
}
我在一本书中阅读了上述内容,但我不太确定作者想在这里说明什么。我已经测试如下:
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(SimpleThreadState(ThreadState.Aborted));
System.Console.WriteLine(SimpleThreadState(ThreadState.Background));
System.Console.WriteLine(SimpleThreadState(ThreadState.AbortRequested));
System.Console.WriteLine(SimpleThreadState(ThreadState.Suspended));
System.Console.WriteLine(SimpleThreadState(ThreadState.Unstarted));
System.Console.WriteLine(SimpleThreadState(ThreadState.WaitSleepJoin));
System.Console.WriteLine(SimpleThreadState(ThreadState.Stopped));
}
public static ThreadState SimpleThreadState(ThreadState ts)
{
return ts & (ThreadState.Unstarted |
ThreadState.WaitSleepJoin |
ThreadState.Stopped);
}
}
这是运行结果: Running Running Running Running Unstarted WaitSleepJoin Stopped
最后三行输出是直截了当的,但为什么所有其他输出运行状态?
谢谢!