新库中的异步方法与非异步方法[关闭]

2024-02-16

在 .NET 4.5 中,有许多方法现在以异步和非异步对的形式出现,例如Flush() and FlushAsync()。理想情况下,I/O 交互在可能的情况下始终是异步的(您始终可以使用.Wait()如果你真的想的话),但由于向后兼容性,非异步(阻塞)版本显然需要保留。

当推出一个没有向后兼容性限制的全新库时,是否有任何理由要包含非异步方法?


异步方法通常具有与之相关的成本,因为编译器生成一个状态机,这会导致相当多的额外代码。如果您不使用async它们不会被抖动的方法,因此您可以避免该成本。

如果您使用async版本并简单地调用Wait()你正冒着deadlock http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html而且一旦async操作完成。所以总体来说结果会表现得稍差一些。

此外,您获得的任何异常现在都将被包装在AggregatedException因此异常处理也会有额外的工作。看一下异步性能:了解异步和等待的成本 http://msdn.microsoft.com/en-us/magazine/hh456402.aspx

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

新库中的异步方法与非异步方法[关闭] 的相关文章

  • 当其源是 https uri 时如何使 wpf MediaElement 播放

    在 wpf 独立应用程序 exe 中 我在主窗口中包含了 MediaElement
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • 如何查明 .exe 是否正在 C++ 中运行?

    给定进程名称 例如 程序 exe C 标准库没有这样的支持 您需要一个操作系统 API 来执行此操作 如果这是 Windows 那么您将使用 CreateToolhelp32Snapshot 然后使用 Process32First 和 Pr
  • DataGridView 列中的数字文本框

    我有一个DataGridView 我想要它的第一列或任何所需的列 其中有textboxes在其中 成为NUMERIC ONLY 我目前正在使用这段代码 private void dataGridViewItems EditingContro
  • 以下 PLINQ 代码没有改进

    我没有看到使用以下代码的处理速度有任何改进 IEnumerable
  • 为什么 C# 中同一类型的隐式和显式运算符不能共存? [复制]

    这个问题在这里已经有答案了 为什么同一类中两个相同类型的运算符 显式和隐式 不能共存 假设我有以下内容 public class Fahrenheit public float Degrees get set public Fahrenhe
  • 虚拟并行端口模拟器

    在我的计算机网络课程中 我们应该通过使用本机寄存器 例如使用 outportb 等命令 来学习并行端口编程 我没有并行端口 因为我住在 2011 年 但想练习这些程序 我使用 dosbox 安装了旧的 Turboc 3 IDE 有没有一个程
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 检测 TextBox 中的 Tab 键按下

    I am trying to detect the Tab key press in a TextBox I know that the Tab key does not trigger the KeyDown KeyUp or the K
  • 无法获取本地或参数的值,因为它在此指令指针处不可用,可能是因为它已被优化掉

    Visual Studio 2010 会删除 没有其他词 不安全块中函数参数之一中的数据 什么可能导致此错误 调试器显示以下消息 Cannot obtain value of local or argument as it is not a
  • 编写具有多种类型的泛型扩展方法时的类型推断问题

    我正在为 IEnumerable 编写一个通用扩展方法 用于将对象列表映射到另一个映射对象列表 这就是我希望该方法的工作方式 IList
  • 在 C 语言中替换宏内的宏

    我正在尝试使代码部分可重用 我下面的评论片段没有达到我想要的效果 define NAME ABC define LOG SIZE NAME LEN 我想LOG SIZE决心ABC LEN 我尝试过使用 但没能让它发挥作用 LOG SIZE在
  • C++ 模板可以提供 N 个给定类的公共父类吗?

    我正在寻找一个 C 模板 它可以找到一组给定类的共同父级 例如 class Animal class Mammal public Animal class Fish public Animal class Cat public Mammal
  • WPF DataGrid - 在每行末尾添加按钮

    我想在数据网格的每一行的末尾添加一个按钮 我找到了以下 xaml 但它将按钮添加到开头 有人知道如何在所有数据绑定列之后添加它吗 这会将按钮添加到开头而不是末尾
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 时间:2019-03-17 标签:c#TimerStopConfusion

    我想通过单击按钮时更改文本颜色来将文本框文本设置为 闪烁 我可以让文本按照我想要的方式闪烁 但我希望它在闪烁几次后停止 我不知道如何在计时器触发几次后让它停止 这是我的代码 public Form1 InitializeComponent
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另

随机推荐

  • 在 PHP 中获取恰好一周前的时间戳?

    我需要使用 PHP 计算 7 天前的时间戳 因此如果当前是 3 月 25 日晚上 7 30 它将返回 3 月 18 日晚上 7 30 的时间戳 我应该从当前时间戳中减去 604800 秒 还是有更好的方法 strtotime 1 week
  • 如何在鼠标悬停时显示隐藏的div?

    如何在鼠标悬停时显示一组隐藏的div 例如 div Div 1 Content div div Div 2 Content div div Div 3 Content div 所有 div 都需要在鼠标悬停事件上显示 如果 div 被隐藏
  • Python Pandas:使用 Aggregate 与 Apply 定义新列

    假设我有一个像这样的数据框 n 20 dim1 np random randint 1 3 size n dim2 np random randint 3 5 size n data1 np random randint 10 20 siz
  • 如何通过黄瓜空手道项目进行调试

    我继承了一个Java Maven Cucumber项目 我对黄瓜相当陌生 在其中一个文件夹中我有一堂这样的课程 import com intuit karate junit4 Karate import org junit runner R
  • 防止 grep 在输入不匹配时返回错误

    我想在 bash 脚本中编写一段代码来检查程序是否已经在运行 我有以下内容来搜索栏是否正在运行 foo ps ef grep bar grep v grep The grep v grep 部分是确保 ps 结果中不考虑 grep bar
  • 用于检查服务是否正在运行的Python代码?

    我正在使用 python2 7 检查服务是否正在运行 我已经制作了自己的服务并将其放在里面 etc init d 我有一个覆盆子 我正在使用它 现在要正常检查服务状态 我们可以这样做 service my service status 但是
  • 无法获取 SAMSUNG S4 本机浏览器历史记录

    我正在从设备本机浏览器访问浏览器历史记录 我使用以下代码 Cursor cur getContentResolver query Browser BOOKMARKS URI new String Browser BookmarkColumn
  • 带间隔 Gurobi 约束的图形着色

    我正在尝试使用 networkx 和 gurobi 修复图形着色问题的一些限制 对于每个 i V 我们定义以下一组区间 每个区间 l u Ii 表示与顶点 i 相关的边集的一对可能的最小颜色 l 和最大颜色 u 此外 对于每个 k K 我们
  • 使用django反向传递查询参数?

    我有一个应该像这样访问的网址 people raj updates people raj updates tag food 但是 Django 反向 URL 解析器似乎没有任何规定可做tag food 即将其检测为额外参数并放入查询字符串中
  • 如果我使用 DOT 和 doxygen,如何更改由 graphviz 创建的图表在 HTML 中的位置?

    我在 doxygen 中使用 dot 和 Graphviz 以 HTML 格式创建代码的用户手册 doxygen 代码看起来有点像这样 br addtogroup MainProgram dot digraph G Main label M
  • C++ 编译器什么时候开始考虑字符串文字字符转义中超过两个十六进制数字?

    我在 C 中有一个 生成的 文字字符串 其中可能包含需要使用转义的字符 x符号 例如 char foo xABEcho 然而 g 版本 4 1 2 如果重要的话 会抛出错误 test cpp 1 error hex escape seque
  • Ecto 与某种情况的关联

    假设我有两个模型 Post and Comment评论模型可以是两种类型中的一种 normal and fancy由列定义type in the comments table 现在我想在我的上添加 2 个关联Post模型 其中一个指的是花哨
  • 如何切换到单击按钮后打开的新浏览器窗口?

    我遇到的情况是 当单击按钮时会打开带有搜索结果的新浏览器窗口 有什么方法可以连接并聚焦到新打开的浏览器窗口吗 并使用它 然后返回到原始 第一个 窗口 您可以按如下方式在窗口之间切换 Store the current window hand
  • 更新后自动缩小 Javascript/CSS 文件吗?

    我知道缩小 JS 和 CSS 文件的方法 但是有没有办法在生产系统中自动缩小这些文件 例如 我修改了原始JS文件中的一些内容并更新了生产环境 但是 在使用 JS 文件时 应该使用 JS 文件的自动缩小版本 如果源文件发生更改 最好更新当前的
  • Solr(太阳黑子),最大结果超过 30?

    我通过 Sunspot for Rails 使用 Solr 但我不知道如何返回超过 30 个结果 假设我有这个搜索块 posts Post search do keywords something end 我如何确定太阳黑子应该返回all比
  • Git 别名为新分支的名称添加前缀

    有没有办法编写一个别名 将当前日期添加到新分支的名称中 例如 git branch today new branch name 应该创建新分支22 09 2015 new branch name name 创建一个 git 别名并将其添加到
  • 识别串口/USB设备python

    这个问题的解决方案可能非常简单 但我对动态与设备交互还很陌生 我正在做的是制作一个Python可执行代码 这样用户的计算机上就不必有Idle或任何类型的Python解释器 这意味着我不知道设备将插入哪个USB端口到 该程序需要能够打开与通过
  • 在 Nginx docker 中,我们如何仅从 error.log 中查看日志

    Nginx Docker 文件配置为将 error log 发送到 dev stderr RUN ln sf dev stdout var log nginx access log ln sf dev stderr var log ngin
  • 检查文档是否为ROOT节点

    我需要知道文档元素是否是页面的根节点 例如 lt ROOT Node lt other document lt other document 在 iframe 1 或 2 中执行的 JavaScript 应该知道它们的文档节点是否是根节点
  • 新库中的异步方法与非异步方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 NET 4 5 中 有许多方法现在以异步和非异步对的形式出现 例如Flush and FlushAsync 理想情况下 I O 交互在可能的