异步操作的例子,来自微软示例。

异步操作的例子

            Action<object> action = (object obj) =>
            {
                Console.WriteLine("线程锁={0}, 线程名={1}, 主线={2}", Task.CurrentId, obj.ToString(), Thread.CurrentThread.ManagedThreadId);
            };
            Task t1 = new Task(action, "线程1");
            Task t2 = Task.Factory.StartNew(action, "线程2");
            t2.Wait();
            t1.Start();

            Console.WriteLine("线程1 已经启动(主线程 ={0})", Thread.CurrentThread.ManagedThreadId);
            t1.Wait();
            Task t3 = new Task(action, "线程3");
            t3.RunSynchronously();
            t3.Wait();
示例2
            ManualResetEventSlim resetEvent = new ManualResetEventSlim(false, 100);
            int i = 0;
            Task t1 = Task.Factory.StartNew(() =>
            {
                do
                {
                    Console.WriteLine("Task t1. i is {0}", i);
                    i++;
                } while (i < 10);
                resetEvent.Set();
            });
            Task t2 = Task.Factory.StartNew(() =>
            {
                resetEvent.Wait();
                Console.WriteLine("Task t2. i is {0}", i);
            });
            Task.WaitAll(t1, t2);

            CountdownEvent countDown = new CountdownEvent(5);
            Task countDownWaitTask = Task.Factory.StartNew(() =>
            {
                countDown.Wait();
                Console.WriteLine("倒计时事件已发出5次");
            });
            Task countDownSignalTask = Task.Factory.StartNew(() =>
            {
                for (i = 0; i < 5; i++)
                {
                    Console.WriteLine("倒计时活动信号");
                    countDown.Signal();
                }
            });
            Task.WaitAll(countDownWaitTask, countDownSignalTask);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值