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
  • 相关阅读:
    企业微信开发基本步骤
    简单的企业微信开发 前后端
    真分页
    企业微信“三次握手”
    Android项目的图标
    Android项目的目录结构
    Android系统提供了哪些东西,供我们可以开发出优秀的应用程序
    Android中的四层架构,五块区域
    MySQL中的concat函数
    Activity生命周期
  • 原文地址:https://www.cnblogs.com/jiyuwu/p/9207072.html
Copyright © 2011-2022 走看看