Esempio n. 1
0
        //将方法包装成适于线程调用的签名
        static void DoSomethingWapper(object state)
        {
            ClosureClass closure = state as ClosureClass;
            var          result  = DoSomething();

            if (closure != null)
            {
                closure.Result = result;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 异步操作
        /// </summary>
        static void AsyncToDo()
        {
            Thread writeThread       = new Thread(new ThreadStart(WriteWapper));
            Thread doSomethingThread = new Thread(new ParameterizedThreadStart(DoSomethingWapper));

            ClosureClass closure = new ClosureClass();

            writeThread.Start();
            doSomethingThread.Start(closure);//闭包对象,用于变量穿越

            writeThread.Join();
            doSomethingThread.Join();

            Console.WriteLine(closure.Result);
        }