次のコードは、ThreadState を、Unstarted、Running、WaitSleepJoin、および Stopped の 4 つの最も有用な値のいずれかに取り除きます。
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
出力の最後の 3 行は単純明快ですが、他のすべての出力が Running 状態を出力するのはなぜでしょうか?
ありがとう!