【转】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";});}

复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt添加翻译文件无效或部分无效

原因&#xff1a; QTranslator::load路径错误qApp->installTranslator调用时机应该在所有界面起来之前。命名空间宏导致的问题。如果一个类有命名空间宏&#xff0c;则宏不会转换为命名空间&#xff0c;导致ts文件内的上下文不包含命名空间。上下文对不上导致部分窗口翻译失…

linux shell脚本攻略第3版_「技术干货」师傅说不会写shell脚本的网安不是一个好黑客,实战...

shell脚本&#xff1f;在说什么是shell脚本之前&#xff0c;先说说什么是shell。shell是外壳的意思&#xff0c;就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统&#xff0c;比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说&#xff0c;Shell是一个命令…

【转】3:C#异步WaitAll的使用

编写界面如图&#xff1a; private async void button1_Click(object sender, EventArgs e){#region 单个执行的异步&#xff0c;效率慢HttpClient wc new HttpClient();string s1 await wc.GetStringAsync(textBox1.Text);label1.Text s1.Length.ToString();string s2 awa…

Qt实现QTextEdit背景透明

QTextEdit为什么要拿出来单独说&#xff0c;因为它继承自QAbstractScrollArea&#xff0c;一般的设置无效。滚动区域ScrollArea内部有一个widget&#xff0c;需要同时设置ScrollArea和viewport两个窗口才能实现透明。代码如下&#xff1a; m_text_editor->setWindowFlags(Q…

python断点调试_「Python调试器」,快速定位各种疑难杂症!!!

在很多的编辑器其实都带着「调试程序」的功能&#xff0c;比如写 c/c 的 codeblocks&#xff0c;写 Python 的 pycharm&#xff0c;这种图形界面的使用和显示都相当友好&#xff0c;简单方便易学&#xff0c;这个不是我这篇文章要讲的重点。今天主要是想给大家介绍一下 「 Pyth…

一篇介绍字体的文章

https://www.ituring.com.cn/article/18076

【转】C# 温故而知新:Stream篇(—)

目录&#xff1a; 什么是Stream? 什么是字节序列&#xff1f; Stream的构造函数 Stream的重要属性及方法 Stream的示例 Stream异步读写 Stream 和其子类的类图 本章总结 什么是Stream? MSDN 中的解释太简洁了: 提供字节序列的一般视图 &#xff08;我可不想这么理解…

python 画树 递归_数据结构 - python如何递归生成树?

问 题 class Tree: def __init__(self, label): self.root label self.child {} def set_child(self, label, relate): self.child[label] relate def get_root(self): return self.root def get_child(self): return self.child 这么一颗树结构&#xff0c;该如何写 def cr…

数据结构中“图”的相关概念理解

以下内容为自己的理解&#xff0c;如有错误请指出。 连通 连通和电路中的导通一样。 注意&#xff1a;连通可以是直接连通&#xff0c;也可以经过其他节点后再连通。只要能导通就叫连通。 连通图 任意两个节点间都有路径的图&#xff0c;叫做连通图。 在无向图中&#xff…

【转】使用websocket-sharp来创建c#版本的websocket服务

当前有一个需求&#xff0c;需要网页端调用扫描仪&#xff0c;javascript不具备调用能力&#xff0c;因此需要在机器上提供一个ws服务给前端网页调用扫描仪。而扫描仪有一个c#版本的API&#xff0c;因此需要寻找一个c#的websocket库。 java里有大名鼎鼎的netty&#xff0c;通过…

java integer valueof_一文读懂什么是Java中的自动拆装箱

本文主要介绍Java中的自动拆箱与自动装箱的有关知识。基本数据类型基本类型&#xff0c;或者叫做内置类型&#xff0c;是Java中不同于类(Class)的特殊类型。它们是我们编程中使用最频繁的类型。Java是一种强类型语言&#xff0c;第一次申明变量必须说明数据类型&#xff0c;第一…

OpenGL模板测试通俗理解

看书籍或资料往往还是云里雾里的&#xff0c;这里写一下自己的理解。希望对需要的人有帮助。 简而言之&#xff1a; 模板缓冲区和帧缓冲区一样大模板缓冲区初始状态是什么&#xff1f; 在glClearBuffer的时候清空&#xff0c;所以初始状态是全为0。模板测试什么时候进行&…

【转】面试:一个单例模式,足以把你秒成渣

去面试&#xff08;对&#xff0c;又去面试&#xff09; 问&#xff1a;单例模式了解吧&#xff0c;来&#xff0c;拿纸和笔写一下单例模式。 我心想&#xff0c;这TM不是瞧不起人吗&#xff1f;我编程十年&#xff0c;能不知道单例模式。 答&#xff1a;&#xff08;.net 平…

python输出星号_Python的星号(*、**)的作用

1. 函数的可变参数 当函数的参数前面有一个星号*的时候表示这是一个可变的位置参数&#xff0c;两个星号**表示是可变的关键字参数。 #!env python #codingutf-8 # def foo(*args, **kwarg): for item in args: print item for k,v in kwarg.items(): print k,v print 30* if _…

三维GIS开发学习资源

OpenGL OpenGL官网&#xff1a;https://www.opengl.org OpenGL学习网站&#xff1a;https://learnopengl-cn.github.io OSG OSG学习网站&#xff1a;https://osg3.readthedocs.io/en/latest/

【转】SQL 语句执行顺序

From&#xff1a;http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解&#xff1a;https://wenku.baidu.com/view/398bc427964bcf84b8d57b00.html 详解一条 SQL 语句的执行过程&#xff1a;http://www.cnblogs.com/cdf-opensource-007/p/6502556.h…

堆和栈的概念和区别 python_堆和栈的概念和区别

在说堆和栈之前&#xff0c;我们先说一下JVM&#xff08;虚拟机&#xff09;内存的划分&#xff1a; Java程序在运行时都要开辟空间&#xff0c;任何软件在运行时都要在内存中开辟空间&#xff0c;Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域&#x…

常用位运算技巧归纳

位运算在嵌入式编程中比较常用&#xff0c;这里做一下归纳。 应用场景1 假设现有一个32位寄存器AX&#xff0c;定义低位第3位控制一个连着LED的引脚P3&#xff0c;定义位标志数 #define SWITCH_LED 0x0004 FAQ 如何将P3拉高&#xff1f;拉高即置1&#xff0c;使用或运算&a…

python程序框架的描述_简单介绍Python下自己编写web框架的一些要点

在正式开始Web开发前&#xff0c;我们需要编写一个Web框架。 为什么不选择一个现成的Web框架而是自己从头开发呢&#xff1f;我们来考察一下现有的流行的Web框架&#xff1a; Django&#xff1a;一站式开发框架&#xff0c;但不利于定制化&#xff1b; web.py&#xff1a;使用类…

【手算】哈夫曼编码—树形倒置快速画法

哈夫曼编码的原理 参考文章&#xff1a;哈夫曼编码详解——图解真能看了秒懂 简单总结其原理&#xff1a; 需求&#xff1a;对重复出现的元素进行二进制编码&#xff0c;最高效的编码方式是哈夫曼编码。 方法&#xff1a;按照元素出现的频率大小构造一棵树&#xff0c;出现次…