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:
    // 等待完成的任务。
    //

  • 相关阅读:
    Hive中频繁报警的问题
    Hadoop中Namenode的HA查询和切换
    昨天面试遇到的一道C语言题
    【转】MapReduce的优化
    关于linux修改max user processes limits的问题
    Hadoop-2.6.0安装文档
    C#使用RabbitMQ
    windows配置Erlang环境
    【转】linux查看及修改文件权限以及相关
    (转)C#图解—PictureBox.SizeMode 属性
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14220388.html
Copyright © 2011-2022 走看看