异步/等待与线程

2023-12-04

在 .Net 4.5 中,微软添加了新的Async/Await简化异步编码的功能。然而,我想知道

  1. Can Async/Await完全取代旧的使用方式Threads?
  2. Is Async/Await有能力做任何事Thread可以做 异步?
  3. Can Async/Await只能与某些方法一起使用,例如WebClient.DownloadStringAsync或者我可以转换任何同步方法以使其使用Async/Await并且不阻塞主线程?

它可以完全取代旧的使用线程的方式吗?

不,线程可以做更多有用的事情。 Await 是专门用来处理某物需要时间,最典型的是 I/O 请求。传统上,这是在 I/O 请求完成时通过回调完成的。编写依赖这些回调的代码相当困难,await 大大简化了它。

能够做线程可以异步做的事情吗?

大致。 Await 只是负责处理延迟,它不会执行线程执行的任何操作。等待中表达,await 关键字右侧的内容就是完成工作的内容。理想情况下,它根本不使用线程,它会发布驱动程序请求,一旦驱动程序完成数据传输,它就会生成完成通知回调。网络是迄今为止最常见的用法,数百毫秒的延迟很常见,也是服务从桌面或 LAN 迁移到“云”时不可避免的副作用。同步使用此类服务​​会使 UI 变得非常无响应。

只能与 WebClient.DownloadStringAsync 等某些方法一起使用

不。您可以将它与任何返回任务的方法一起使用。 XxxxAsync() 方法只是 .NET 框架中为需要时间的常见操作预先准备的方法。就像从网络服务器下载数据一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步/等待与线程 的相关文章

随机推荐

  • 如何使用自动工具更改包含文件路径?

    我正在 ubuntu 中开发一个简单的聊天应用程序 它使用 crypto crypto 头文件的文件夹是 usr include crypto 当我将源标签栏上传到CentOS 我发现crypto 的头文件的文件夹是 usr include
  • 如何使用 npm 安装甚至不在 Node 应用程序中使用的全局包?

    我的知识npm这是 它是一个包管理器Node js应用程序 这意味着当您的节点应用程序需要其他人的库 包时 您可以方便地使用npm获取这些依赖项 但我最近遇到了这个命令 npm install g cca 然后我输入cca在我的终端中 现在
  • 在不循环的情况下连接单列中的记录?

    我有一个包含 1 列 varchar 值的表 如果可能的话 我正在寻找一种无需循环即可将这些值连接成单个值的方法 如果循环是解决此问题的最有效方法 那么我会采用这种方法 但我认为在默认使用该方法之前我会要求其他选项 我还想将其保留在 SQL
  • 在 Scala 中对数据库游标进行功能处理

    当我需要使用 JDBC 驱动程序从 PostgreSQL 数据库读取数百万个数据库行时 我总是使用游标 否则我将收到 OutOfMemoryError 这是我使用的模式 伪代码 begin transaction execute decla
  • Javascript 正则表达式允许阿拉伯语中的特定字符

    如何编写正则表达式以允许阿拉伯语中的特定字符或数字 我有这个正则表达式 但它确实匹配所有阿拉伯语和英语 sa zA Z u0600 u06FF 我想限制它只写arabic letters with space s 和破折号 对于将来的使用
  • 在Python中绘制轨道轨迹

    如何在Python中设置三体问题 如何定义求解 ODE 的函数 这三个方程是 x mu np sqrt x 2 y 2 z 2 x y mu np sqrt x 2 y 2 z 2 y and z mu np sqrt x 2 y 2 z
  • c:在子进程中运行的 exec() 中捕获段错误

    EDIT 我正在尝试编写一个简单的冒烟测试 其中测试所有选项和合理参数 我使用 popen 来执行应该测试的程序 使用这种方法不起作用 因为如果进程因信号 SIGINT SIGSEGV 而终止 来自 popen 的管道不会告诉我发生了什么
  • 如何从 SQL Server 中的 URL 读取 JSON 数据

    我正在尝试使用以下代码从 SQL Server 2008 中的 URL 读取 JSON 数据 DECLARE temp table RowNum int DATA NVARCHAR max DECLARE url VARCHAR MAX w
  • ruby on Rails 中的 Bootstrap 模式不工作(不显示)

    我正在使用 Rail4 和 bootstrap sass 3 3 6 我已按照以下步骤操作https coderwall com p ej0mhg open a rails form with twitter bootstrap modal
  • R 中一页上的多个绘图

    如何在 R 上的一个 pdf 页上绘制 7 个不同的图表 我目前使用的是matplot 它似乎没有这个选项 我需要根据数据列绘制数据列 我最初尝试使用点阵库来做到这一点 但我似乎无法弄清楚如何绘制数据列 好像想要一个功能 要创建绘图的 pd
  • 检测 __getattribute__ 调用是否是由于 hasattr

    我正在重新实施 getattribute 为了一堂课 我想注意到提供属性的任何不正确 当然意味着失败是预料之中的 失败 因为 getattribute 实施结果相当复杂 为此 如果我的代码在引发之前无法找到 提供该属性 我会记录一条警告At
  • 估计/计算内存中对象大小的好方法

    假设我有对象 Tom 它有类 Person Class Person String Name DateTime BirthDate String Role Int32 Salary 如果它具有以下值 您能否给我它的内存大小的近似值 名字 汤
  • 是否有任何指南或工具可将 JMeter .jmx 文件转换为 Karate DSL 功能文件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何工具或指南可用于将 JMeter jmx 文件转换为空手道 DSL feature 文件 我们有一个大尺寸的 jmx 文件 我想将其转换为
  • boost::asio 与 no_delay 不可能吗?

    我知道的 我需要打电话set option tcp no delay true before connect 根据https stackoverflow com a 25871250否则没有效果 此外 set option 仅当套接字事先打
  • Java BC SicBlockCipher直接输出等价于c#

    我正在用 C 实现一些东西 对此我有一个单独的规范 并且对我需要做什么有相当清楚的了解 但同时作为参考 我有一个 Java 实现 并且希望在本例中遵循 Java 实现 如下所示尽我所能 该代码涉及加密流 Java 源代码是here相关行在这
  • eclipse打开excel文件出错

    我收到以下错误 无法创建就地编辑器 这可能是因为没有 针对类型注册的 OLE 编辑器 您尝试打开的文件的名称 创建 Ole 客户端失败 结果 2147417851 我有MS Office 2007 Excel文件存储为 另存为2003版本
  • 如何将 ctypes 指针转换为 Python 类的实例

    假设您有以下 C 代码 typedef void PythonCallbackFunc void userData void cb PythonCallbackFunc pcf void userData pcf userData 以及以下
  • PHP 文件不写入当前目录?

    我在网络主机上有一个 PHP 文件 如下所示 但文件test txt当我从浏览器执行页面时不会创建 为什么不 是权限问题吗 是的 PHP 文档说 如果文件名不存在 则创建该文件 否则 现有文件将被覆盖 除非设置了 FILE APPEND 标
  • keytool 错误:java.lang.Exception:必须指定 -keyalg

    我正在尝试创建密钥对 并从 Windows 命令行提示符 使用 Windows 10 JDK 14 将它们存储在密钥存储中 这是我正在输入的命令 keytool genkey alias chris keystore chirskeysto
  • 异步/等待与线程

    在 Net 4 5 中 微软添加了新的Async Await简化异步编码的功能 然而 我想知道 Can Async Await完全取代旧的使用方式Threads Is Async Await有能力做任何事Thread可以做 异步 Can A