Task == 是懒惰的吗?

2023-12-11

public Data GetCurrent(Credentials credentials)
{ 
    var data = new Lazy<Data>(() => GetCurrentInternal(credentials));
    try
    {
        return data.Value;
    }
    catch (InvalidOperationException ex)
    {
        throw ex.InnerException;
    }
}

如果我将调用更改为以下内容:

var data = new Task<Data>(() => GetCurrentInternal(credentials));

有什么变化吗?我应该更喜欢Task over Lazy?关于什么Dispose() and catch(Exception) ?


相似之处

Both Lazy<T> and Task<T>承诺稍后做一些工作并返回类型的结果T.

差异

Lazy<T>承诺在需要时尽可能晚地完成工作,并且同步完成。

Task<T>但是,当您的线程执行其他工作或阻塞等待结果时,可以异步执行其工作。

Lazy<T>当您调用时,将冒出由 lambda 引起的任何异常.Value.

Task<T>将保留由 lambda 引起的任何异常,并在稍后抛出它await task。或者如果你task.Wait() it may将异常包装在AggregationException。我建议您参阅此内容以获取有关捕获任务引发的异常的更多信息:捕获异步方法抛出的异常和这个http://stiller.co.il/blog/2012/12/task-wait-vs-await/

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

Task == 是懒惰的吗? 的相关文章

随机推荐

  • Bash - 将变量连接到路径上

    目前 我有一个 bash 脚本 它将在我的根目录中解压文件 bin bash tar xvf some file tar 这工作没有问题 现在 我想更改此设置 以便可以在预定义变量中指定文件的路径 如下所示 bin bash p tar x
  • OverflowException 仅在 VB.net 中出现,在 C# 中没有

    出于自我教育的目的 我试图找到一种自己创建高度图的方法 我用谷歌搜索了一下 发现了一个创建伪随机数的函数 public static float Noise int x x x lt lt 13 x return 1f x x x 1573
  • 如何将React-Native中的字符串变成组件?

    我有一个var str
  • 即使 strlen 在可接受的范围内,此正则表达式也会截断字符串中的最后一个单词

    theExcerpt Lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor incididunt ut labore et dolore
  • SQL 查询提取当月数据

    我想要对处置进行计数 并且只计算当月的处置 这是我的代码 SELECT Disposition COUNT Disposition AS Count Date FROM CSLogs dbo Logs GROUP BY Dispositio
  • 将文本写入文件的中间

    有没有办法可以从文件中的某个点将文本写入文件 例如 我打开一个包含 10 行文本的文件 但我想在第 5 行写入一行文本 我想一种方法是使用 readalllines 方法将文件中的文本行作为数组返回 然后在数组中的某个索引处添加一行 但有一
  • 为什么 Python 中的列表理解比 map() 更快?

    我正在研究Python中类似循环结构的性能问题 发现以下语句 除了列表推导式的语法优势之外 它们通常还 与同等使用地图一样快或更快 性能技巧 列表推导式的运行速度比等效的 for 循环要快一些 除非 你只会丢弃结果 蟒蛇速度 我想知道幕后的
  • Docker compose mysql 连接失败

    我正在尝试使用 docker compose 运行 2 个 docker 容器并将 mysql 容器连接到应用程序容器 Mysql 容器正在运行 但应用程序容器无法启动并出现错误错误 2003 无法连接到 127 0 0 1 3306 上的
  • 如何删除二维向量中的列,C++

    如果我在创建矩阵的向量中有一个向量 如何删除该矩阵中的特定列 我已经填充了二维向量 现在我需要一种方法来删除该向量中的特定列 例如我的向量看起来像 vector
  • Python:与 urljoin 的混淆

    我正在尝试从不同的部分形成 URL 但无法理解此方法的行为 例如 Python 3 x from urllib parse import urljoin gt gt gt urljoin some thing thing gt gt gt
  • `(Integer a) => a -> Bool` 和 `Integer -> Bool` 之间的区别?

    今天我用 Haskell 写了第一个程序 编译并运行成功 而且由于它不是典型的 你好世界 程序 它实际上做的远不止这些 所以请祝贺我 D 不管怎样 我对我的代码和 Haskell 中的语法没有什么疑问 Problem 我的程序读取一个整数N
  • 使用 Java 创建 Snake

    我决定使用 Java 重新创建 Snake 但我有点卡住了 目前 我有一个正方形 用户可以使用箭头键在屏幕上移动 当您按一次向左键时 方块开始使用计时器向左移动 您不需要按住该键或一直按住它 当您按下任何其他设置的键 右 上 下 时 它会改
  • 如何在 onitemclick 上的 webview 中加载 HTML 文件

    我有超过 100 个 html 文件 我希望每个文件在列表视图中单击行时打开 并且每个 html 文件应在 web 视图中打开 我尝试了此代码 但这不起作用 只有 web 视图在行单击时打开 html 文件没有出现 package com
  • Bootstrap 3 - 移动设备上的桌面视图

    在移动设备上时是否可以将引导网站显示为桌面版本 基本上 该页面将显示 992px 或 1200px 视口 而不是小型设备视口 例如 BBC允许您使用页面底部的链接在移动网站和桌面网站之间切换 这就是我想要做的 谢谢 利亚姆 您只需要设置视口
  • WooCommerce 中特定产品变体的自定义后缀

    我正在尝试为可变商品的价格添加后缀 它只需要在选择该特定项目时显示 我尝试了 stackoverflow 中的一些不同代码 但所有代码都将后缀添加到所有变量 而不仅仅是我需要的变量 目前我正在使用以下代码 但它给出了一个严重错误 致命错误
  • C# 和正则表达式 - 无法识别的分组构造

    目前正在研究客户端 服务器应用程序的论文 如果服务器接收到这样的信息 我遇到了一个障碍 ProToCooL unknown DESKTOP 29COFES 10 20 9 53 Hewlett Packard 179C PCWJA001X3
  • 匹配带有空格的不区分大小写的精确短语

    如果我有一个字符串 Hello I went to the store today 我有一系列比赛 perfectMatches array i went store today 它应该与这两者相匹配 数组可能会变得很大 所以我更愿意在 1
  • 如何在java中执行1个命令x次

    我想问一下如何多次执行1个命令 例如这段代码 System out println Hello World 我想运行 500 次 我该怎么做 谢谢 问候 威廉姆斯 使用 Java 8 Streams 你可以这样做 IntStream ran
  • 在 Objective-C 中将 NSArray 转换为 NSString

    我想知道如何转换NSArray Apple Pear 323 Orange 到一个字符串Objective C NSString result array valueForKey description componentsJoinedBy
  • Task == 是懒惰的吗?

    public Data GetCurrent Credentials credentials var data new Lazy