C# C中的AutoResetEvent.WaitOne()方法返回值#

C# C中的AutoResetEvent.WaitOne()方法返回值#,c#,multithreading,C#,Multithreading,我有以下代码: class Program { static AutoResetEvent objAuto = new AutoResetEvent(false); static void Main(string[] args) { ThreadPool.QueueUserWorkItem(new WaitCallback(SetState)); Console.ReadLine();

我有以下代码:

class Program
    {
        static AutoResetEvent objAuto = new AutoResetEvent(false);
        static void Main(string[] args)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(SetState));
            Console.ReadLine();
            objAuto.Set();
        }
        static void SetState(object rsevent)
        {
            Console.WriteLine("Starting....");
            bool result = objAuto.WaitOne(10000); // 10 seconds
            Console.WriteLine("Finishing..." + result);
        }
    }
当我运行此代码并在10秒内点击
Enter
时,我在
result
变量中得到值
true
,否则
false

该布尔值在每个场景中表示什么。。。 我还需要知道另一个重载
WaitOne
的含义/用法,它有一个
boolean
参数,如下所示

objAuto.WaitOne(10000,false)

第二个参数是
exitContext
这是什么?这是什么类型的
context
退出?

如果返回true,则事件被触发;如果返回false,则方法结束是因为达到了超时,而不是因为事件被触发。这在中有说明。

返回值指示事件是否在指定的超时内发出信号。如果返回值为true,则发出事件信号;如果为false,则超时已过期

exitContext
的布尔参数指示是否释放调用此方法的同步上下文。看更多

除非从非默认托管上下文中调用
WaitOne
方法,否则
exitContext
参数无效。如果线程位于对从
ContextBoundObject
派生的类的实例的调用中,则可能发生这种情况。即使您当前正在对不是从
ContextBoundObject
派生的类(如
String
)执行方法,如果
ContextBoundObject
位于当前应用程序域的堆栈上,您也可以处于非默认上下文中

当代码在非默认上下文中执行时,为
exitContext
指定true会导致线程在执行
WaitOne
方法之前退出非默认托管上下文(即转换到默认上下文)。对
WaitOne
方法的调用完成后,线程返回到原始的非默认上下文


假设您已经阅读了MSDN文章-请解释您不了解的内容?请不要在同一篇文章中问两个单独的问题。AutoResetEvent的MSDN文章没有说明WaitOne()返回的内容,但关于其基类的文章有说明。愚蠢的微软。