什么是同步和异步方法?

2024-03-31

什么是同步方法,什么是异步方法?同步方法和异步方法有什么区别?什么时候必须使用同步或异步方法? 我问这些问题是因为我不明白:

public async void ReadData(filepath)
{
    CreateDoc("hello");    //<------ Why I can't do that ?
}

public void CreateDoc(string astring)
{
    Debug.WriteLine(astring);
}

为什么我不能这样做? :

public async void ReadData(filepath)
{
     var BarreDroite = new string[] { "|" };
     foreach (string tableArret in items.Split(BarreDroite, StringSplitOptions.RemoveEmptyEntries))
     {
         listeArret.Add(tableArret); //<---- Here appear the problem.
     }
{

我问这个问题是因为我在网上找不到明确的解释。


函数和其他操作在“线程”上运行。线程只是一串操作,但一次可以有多个线程。在某些方面,最重要的线程是主线程,通常称为 UI 线程,因为这是控制用户界面的地方。

当执行冗长的操作(例如从互联网获取数据)时,您不希望在主线程上等待该数据,因为您将“阻止”该线程响应用户输入(例如,单击取消按钮)

为了解决这个问题,您可以将长时间运行的任务放在它自己的线程上。 C# 使这变得简单,您只需使用await 关键字,该函数将等待工作完成,而不会阻塞主线程。

单词await 是一个“关键字”——它的使用是为此目的而保留的。要表明函数中有await,您必须使用async 标记该函数。如果您确实将其标记为异步,则编译器将期望至少有一个等待。

你的例子:

public async void ReadData(filepath)
{
    CreateDoc("hello");    //<------ Why I can't do that ?
}

您已将此方法标记为异步,但没有任何等待

希望这可以帮助

jesse

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

什么是同步和异步方法? 的相关文章

  • 将列表数组中的值绑定到列表框

    任何机构都可以给出一个简短的示例 用于将列表数组中的值绑定到 c net 中的列表框 这取决于您的列表数组的情况 让我们从一个简单的示例开始 List
  • 如何将异常对象序列化为 xml 字符串

    我想要类似的东西 try code here catch Exception ex stringXML Exception toXML 这样 stringXML 的值就是
  • C/C++ 程序是在 CPU 上运行还是在内核上运行?

    我已经编程很多年了 但有一件事我一直不明白 有两种类型的编程语言 编译型语言和解释型语言 编译型语言首先需要编译成解释型语言 然后才能执行 例如 C C 需要先编译为机器语言 然后才能执行 我的问题来了 谁真正运行已编译的 C C Wind
  • Windows 10 UWP 中的视觉状态管理器未在页面加载时应用初始状态

    我有一个带有相关面板的页面 可以根据宽度重新组织 但是 除非宽度 gt 720px 否则它似乎不会在加载时应用任何状态 如果我在加载页面后调整页面大小 则两种状态都有效 解决方法是检查加载页面上的窗口大小并手动选择状态 但我相信这应该自动处
  • Windows CE 6.0 和运行时链接到调试 DLL /MDd

    我在 x86 PC 上使用 Windows CE 6 0 R3 我已经为该平台构建了 NK bin 和 SDK 但我有一些问题需要了解如何使用 MTd 调试 DLL 构建控制台应用程序 如果我尝试构建这个 main c with MDd i
  • Visual Studio 2015 C# 找不到参考

    我在使用 Visual Studio 2015 和 C 时遇到了问题 在同一解决方案中添加对其他项目的引用时 Visual Studio 找不到所有类 例如 我创建了一个单元测试项目 我添加了对我创建的通信项目的引用 库中有 10 个类 但
  • std::async 参数的生命周期是多少?

    看来函数的参数是通过std async分享未来的生活 include
  • 为什么 .Net 框架指南建议您不要使用 ref/out 参数?

    显然 他们很 混乱 这是认真的原因吗 你还能想到其他的吗 你见过有多少开发人员并不真正理解 ref out 吗 我在真正需要的地方使用它们 但在其他地方则不然 它们通常仅在您想有效返回两个或多个值时才有用 在这种情况下它至少值得thinki
  • C++ 虚拟关键字与重写函数

    我正在学习c 并且正在学习virtual关键字 我在互联网上搜索试图理解它但无济于事 我进入编辑器并做了以下实验 期望它打印两次基本消息 因为我的印象是需要 virtual 关键字来覆盖函数 然而 它打印出了两条不同的消息 有人可以向我解释
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • 当 C 中没有足够的内存用于静态分配时会发生什么?

    当您动态分配内存时 例如malloc 1024 sizeof char 结果指针设置为NULL如果没有足够的可用内存来满足请求 当没有足够的内存来满足静态分配时会发生什么 例如char c 1024 char c 1024 不一定是静态分配
  • 如何从 Function App 设置会话 ID 或创建自定义字段到 Application Insights

    功能应用程序如下 public static async Task
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 将华氏温度转换为摄氏度的 C 程序始终打印零

    我需要一些关于用 C 语言将华氏温度转换为摄氏度的程序的帮助 我的代码如下所示 include
  • PARITY_NONE 是 C++ Windows 中的关键字吗?

    我正在使用 boost 编写一个串行库 并且我有一个枚举 enum parity t PARITY NONE PARITY ODD PARITY EVEN 我收到如下错误 错误 1 错误 C2059 语法错误 我无法弄清楚问题是什么 然后我
  • std::iota 的 iota 代表什么?

    我假设 i 是增量 a 是分配 但我无法弄清楚或找到答案 而且 它看起来与非标准非常相似itoa我认为这很令人困惑 C iota is not an acronym or an initialism It is the word iota
  • WPF DataGrid 选定项

    我有一个 DataGrid 用户可以通过在最后一行输入数据来添加项目 我还有一个按钮可以删除当前选定的项目 但是 当选择最后一行 空 用于添加新项目 时 最后选定的项目将保留在 SelectedItem 中 因此 如果我打开窗口 选择最后一
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty
  • ASP.NET API:尚未为此 DbContext 配置数据库提供程序

    我正在尝试从我的 Net Core API 项目连接到 MySql 数据库 这是我的上下文类 public class MyContext DbContext public MyContext public MyContext DbCont
  • 清理 TPL 中的 CallContext

    根据我使用的是基于 async await 的代码还是基于 TPL 的代码 我在逻辑清理方面得到了两种不同的行为CallContext 我可以设置和清除逻辑CallContext如果我使用以下异步 等待代码 正如我所期望的 class Pr

随机推荐

  • 性能说明:预热后代码运行速度变慢

    下面的代码运行完全相同的计算 3 次 它没有做太多事情 基本上将 1 到 100m 之间的所有数字相加 前 2 个块的运行速度大约是第三个块的 10 倍 我已经运行这个测试程序超过 10 次 结果显示差异很小 如果有的话 我希望第三个块运行
  • 安装 Swashbuckle.AspNetCore 包后,Aspnet core 2.2 默认路由更改为“~/index.html”

    在我的 Asp net Core MVC 应用程序中安装 Swashbuckle AspNetCore 后 默认路由将被 index html 页面覆盖 我现在使用 的地方是将我的应用程序重定向到 index html 而不是默认的 MVC
  • 如何推断两个人之间的财产是兄弟

    我需要推断一个人是另一个人的兄弟 如果他们有同一个父亲 所以 如果我有这个 巴特有父亲荷马 丽莎有父亲荷马 Because Bart and Lisa有同一个父亲 我想推断 丽莎有弟弟巴特 有没有什么方法可以利用任何属性特征来做到这一点 使
  • MediaCodec 和 TextureView 的 Z 顺序问题

    在我的 Android 应用程序中 我需要使用以下 Z 顺序渲染三个视图 在底部 输出表面MediaCodec解码器覆盖整个屏幕 我有一个要求 我必须转换生成的图像MediaCodec 例如缩放 中间有一个GLSurfaceView 或我定
  • 如何修改 Grails 中的域类?

    我无法弄清楚在自动创建相应的数据库表后修改域类的 标准做法 是什么 Grails 中没有 迁移 而且我无法告诉它输出它将生成的新 SQL 以便您可以将其与之前的表定义进行比较并手动发出您自己的 ALTER TABLE 命令 这就是我所做的
  • R:index()或index.xts()改变了时间序列的Date值,为什么?

    我想从使用 getSymbols 获得的时间序列中提取日期 但是当我使用 index index xts 函数时 返回的日期似乎早了一天 我无法理解为什么下面的代码中会发生这种行为 然而 预期的行为是获取与原始时间序列中的日期对象相对应的日
  • 仅在处理同一主题的 SQS 订阅后调用 AWS Lambda SNS 事件

    我想实现一个 Amazon SNS 主题 它首先将消息传递到作为该主题订阅者的 SQS 队列 然后执行也是同一主题订阅者的 AWS Lambda 函数 然后 Lambda 函数可以从 SQS 队列读取消息并并行处理其中的多个消息 数百个 我
  • 使用 HTML5 Web 数据库存储文件以供离线访问

    我正在尝试为 iPad 创建一个简单的网络应用程序 需要在没有互联网连接的地方使用 该应用程序本质上是一个简单的 幻灯片 但还包含一些视频文件 通常约为 100MB 最初 我计划在上路之前使用 HTML5 的离线清单缓存将资源同步到 iPa
  • 替换 C++ 矩阵类中特定颜色的所有像素

    1 我有一个矩阵类 Mat src imread pic png 0 http i1265 photobucket com albums jj502 anizilla demo result png http i1265 photobuck
  • 是否可以制作带有 UL/LI 且无图像的滑块? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 因此 我在谷歌上寻找滑块教程 我发现了很多 但都是图像 我想知道是否可以用 ul 元素制作一个没有图像的滑块 例如 UL 的宽度为 300
  • asp.net 自定义 HttpHandler 和 URL 路由

    我想通过自定义 HttpHandler 处理对我的应用程序 http example com whateverpath 的请求 但返回的内容取决于 whateverpath 的值 因此 访问 http example com path1 的
  • 禁用所选文件的“文档注释”警告

    Xcode 能够检查文档注释问题 并在出现问题时报告警告 例如 我使用 CocoaPods 将 Facebook SDK 添加到我的项目中 在文件中的某个时刻FBError h有以下代码 typedef NS ENUM NSInteger
  • 如何使用 sqlplus 或 sql Developer 云连接连接到 Azure Oracle 12c 数据库

    我在 azure 中有 2 个虚拟机 一个是数据库服务器 另一个是 Web 服务器 我可以获得这些服务器的远程桌面连接 并且 Web 服务器可以连接到数据库 sqlplus user password internal network ip
  • jsTree通过ajax加载子节点

    下面发布的代码通过 ajax 请求加载我的树的根元素 我的树非常大 因此我无法一次加载所有项目 因此我需要通过请求子级提供特定 ID 来加载元素 如何通过点击节点通过ajax加载元素 jstree demo div jstree plugi
  • Bootstrap 3 导航下拉菜单

    我使用带有下拉菜单的导航栏 Bootstrap 3 我调整浏览器窗口的大小 我打开菜单 我调整浏览器窗口大小 gt 767px 我打开下拉菜单 在导航栏中 问题 下拉菜单中出现滚动条 见下图 我的 nav 元素是相对位置
  • Mongod 错误:98 无法锁定文件:/data/db/mongod.lock 资源暂时不可用。 mongod 实例是否已在运行?

    2017 06 12T13 06 18 407 0300 I 存储 initandlisten initAndListen 中出现异常 98 无法锁定文件 data db mongod lock 资源暂时不可用 mongod 实例是否已在运
  • 角度材质垫 - 根据最长选项宽度选择宽度

    我有一个带有选项的垫选择 我希望将其内联设置为文本 并且下拉菜单的长度与最长的选项一样长 我可能可以使用 js css vanilla 风格进行一些黑客攻击 但正在寻找更好的解决方案 有什么想法吗
  • Dart:如何创建一个空列表作为默认参数

    我有多个列表 如果没有为它们分配任何内容 则默认情况下它们需要为空 但我收到这个错误 class Example List
  • 如何覆盖 tdalign="center"?

    据收集自为什么align center 不覆盖 text align right https stackoverflow com questions 2546857 why aligncenter not overriding on tex
  • 什么是同步和异步方法?

    什么是同步方法 什么是异步方法 同步方法和异步方法有什么区别 什么时候必须使用同步或异步方法 我问这些问题是因为我不明白 public async void ReadData filepath CreateDoc hello lt Why