zoukankan      html  css  js  c++  java
  • 2:C#TPL探秘

    理论:

    1、 只要方法是 Task类型的返回值,都可以用 await 来等待调用获取返回值。

    2、 如果一个返回 Task类型的方法被标记了 async,那么只要方法内部直接 return T 这个 类型的实例就可以。

    3、 一个返回 Task类型的方法没有被标记了 async,那么需要方法内部直接 Task 实例。

    实践(自己添加一个按钮):

    private async void button1_Click(object sender, EventArgs e)
            {
                #region 方法一:
                //string i1 = await F1Async();//保证异步任务执行完
                //MessageBox.Show("i1=" + i1);
                //string i2 = await F2Async();
                //MessageBox.Show("i2=" + i2);
                #endregion
    
                #region 方法二:
                Task<string> task1 = F1Async();
                Task<string> task2 = F2Async();
                string i1 = await task1;//这里保证task1的任务一定执行完,并不是这里才执行异步任务。
                MessageBox.Show("i2=" + i1);
                string i2 = await task2;
                MessageBox.Show("i2=" + i2);
                #endregion
            }
            static Task<string> F1Async()
            {
                MessageBox.Show("F1 Start");
                return Task.Run(() =>
                {
                    System.Threading.Thread.Sleep(1000);
                    MessageBox.Show("F1 Run");
                    return "F1";
                });
            }
            static Task<string> F2Async()
            {
                MessageBox.Show("F2 Start");
                return Task.Run(() =>
                {
                    System.Threading.Thread.Sleep(2000);
                    MessageBox.Show("F2 Run");
                    return "F2";
                });
    
            }
    View Code
  • 相关阅读:
    @ModelAttribute 与@InitBinder
    springboot开启矩阵传参MatrixVariable
    socket(一)
    request请求《一》
    Ajax请求中的async:false/true的作用
    java.lang.NullPointerException at org.apache.jsp.index_jsp._jspInit(index_jsp.java:40)
    shiro登录源码
    js(正则验证)
    多进程之间的通信
    队列中常用方法的使用
  • 原文地址:https://www.cnblogs.com/jiyuwu/p/9207072.html
Copyright © 2011-2022 走看看