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
  • 相关阅读:
    java-学习8
    java-学习7
    java-学习6
    html----h1-6标签
    jquery.cookie介绍和用法
    java-学习5
    java-学习4
    Eclipse里的代码光标变成一个黑色块
    java-学习3(jdk-环境配置)
    箭头函数无法使用this的解决方法
  • 原文地址:https://www.cnblogs.com/jiyuwu/p/9207072.html
Copyright © 2011-2022 走看看