【发布时间】:2011-05-09 18:14:13
【问题描述】:
以下代码将 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状态呢?
谢谢!
【问题讨论】:
标签: c# multithreading thread-state