/// <summary>
        /// C#为多个线程的同步提供了自己的关键字:lock语句。lock语句是设置锁定和解除锁定的一种简单方式。
        /// </summary>
        static void SyncSample()
        {
            // 创建一个SharedState对象,并把它传递给20个Task对象的构造函数
            int numTasks = 20;
            var state    = new SharedState();
            var tasks    = new Task[numTasks];

            // 因为执行了50000次循环,有20个任务,所以写入控制台的值应是1000000。但是,事实常常并非如此
            for (int i = 0; i < numTasks; i++)
            {
                tasks[i] = Task.Run(() => new Job(state).DoTheJob());
            }
            for (int i = 0; i < numTasks; i++)
            {
                tasks[i].Wait();
            }
            Console.WriteLine("summarized {0}", state.State);
        }
 public Job(SharedState sharedState)
 {
     this.sharedState = sharedState;
 }