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

  • 相关阅读:
    jQuery源码——.html()方法原理解析
    【翻译】JavaScript内存泄露
    【翻译】ES6生成器简介
    浅谈事件冒泡
    Github page搭建博客使用自定义插件的方法
    【翻译】JavaScript中5个值得被广泛使用的数组方法
    【翻译】浏览器渲染Rendering那些事:repaint、reflow/relayout、restyle
    《JQuery技术内幕》读书笔记——自调用匿名函数剖析
    解决transition动画与display冲突的几种方法
    JavaScript递归中的作用域问题
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14220388.html
Copyright © 2011-2022 走看看