zoukankan      html  css  js  c++  java
  • C# 中的异步问题 Task

     public class SharedData

        {

            public int Value { get; set; }

        }

        public class Test

        {

            async Task ModifyValueAsync(SharedData data)

            {

                Console.WriteLine("pre value Current thread id is {0}",        Thread.CurrentThread.ManagedThreadId);

                await Task.Delay(TimeSpan.FromSeconds(1));

                data.Value = data.Value + 1;

                Console.WriteLine("after value Current thread id is {0}", Thread.CurrentThread.ManagedThreadId);

            }

            // 警告:可能需要同步,见下面的讨论。

           public async Task<int> ModifyValueConcurrentlyAsync()

            {

                var data = new SharedData();

                // 启动三个并发的修改过程。

                var task1 = ModifyValueAsync(data);

                var task2 = ModifyValueAsync(data);

                var task3 = ModifyValueAsync(data);

                await Task.WhenAll(task1, task2, task3);

                return data.Value;

            }

        }

    --------------------------------------------------------------------

    main 执行代码

    static void Main(string[] args)
    {

      test();

      Console.ReadLine();
    }
    static async void test()
    {
      // SharedData sd = new SharedData();
      // sd.Value = 10;
      Test t = new Test();
      int m = await t.ModifyValueConcurrentlyAsync();
      Console.WriteLine(m);
    }

     Task.Delay 

    // 摘要:
    // 创建一个在指定的时间间隔后完成的任务。
    //

     public static Task WhenAll(params Task[] tasks);

    // 摘要:
    // 创建一个任务,该任务将在数组中的所有 System.Threading.Tasks.Task 对象都完成时完成。
    //
    // 参数:
    // tasks:
    // 等待完成的任务。
    //

  • 相关阅读:
    Thread之六:线程创建方法
    MySQL优化技巧之四(数据库设计中的一些技巧)
    数据库设计三大范式
    分布式事务之:TCC (Try-Confirm-Cancel) 模式
    spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller
    Thread之五:线程的优先级
    分布式事务之:TCC几个框架的测试情况记录
    spring AOP 之四:@AspectJ切入点标识符语法详解
    IP地址漂移的实现与原理
    高可用集群heartbeat全攻略
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14220388.html
Copyright © 2011-2022 走看看