为什么任务的 Result 属性对于非泛型任务 (C# 4.0+) 不可用?

2023-12-27

我正在尝试掌握 .NET 4.0+ 任务并行库概念......

在以下 C# 4.0 代码片段中:

Task t = Task.Factory.StartNew(() =>
{
   Console.WriteLine("I am the task");
   return "res1";
});

如果不能使用返回值,除非使用通用任务,否则为什么编译器(以及运行时)不会产生任何错误:

Task<string> t = Task.Factory.StartNew(() =>
{
   Console.WriteLine("I am the task");
   return "res1";
});

或者它(返回的对象)可以使用?

我的理解正确吗<string> in Task<string>仅在检测或确保返回类型(ed 对象)或t.Result?
或者除了这个之外还有其他隐藏的必需品吗?

为什么不能从返回对象的类型判断这个类型?
IE。为什么任务的 Result 属性对于非通用任务不可用?


非泛型Task没有Result属性,因为它代表一个过程not产生一个结果。

您的代码创建了一个Task<string>在这两种情况下,但在第一种情况下,您将其转换为Task (Task<string>源自于Task,所以这是合法的),因此您失去了引用结果的能力。

您可以直接使用以下命令查看:

Task t = Task.Factory.StartNew(() =>
{
   Console.WriteLine("I am the task");
   return "res1";
});

var genericTask = t as Task<string>; // genericTask will be non-null
var result = genericTask.Result;     // and you can access the result
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么任务的 Result 属性对于非泛型任务 (C# 4.0+) 不可用? 的相关文章

  • 链接 .Net 程序集

    这都是假设 所以请耐心等待 假设我正在用 C 编写一个名为 Foo 的工具 输出是 foo exe 我发现了一些我喜欢使用的非常棒的库 称为 Bar 我可以在我的项目中将其引用为 bar dll 当我构建项目时 我的输出目录中有 foo e
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 包恢复失败。回滚包更改 - Serilog.AspNetCore

    我有一个 asp net Core 项目 我正在尝试向其中添加一个记录器 我选择了我在其他项目中使用过的 SeriLog 但是当我尝试添加 Serilog AspNetCore 我得到的软件包版本 2 0 0 包恢复失败 回滚 后端 的包更
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Guid.NewGuid().GetHashCode() 用于数据库

    这对于用作数据存储 SQL Server 的 ID 可靠吗 我会使用 guid 但我更喜欢数字值 A guid更有可能代表一个记录uniquely than a numeric value 随着 GUID 确保全球唯一性 GUID 可以跨数
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L

随机推荐

  • 在 OData 中进行“稳定分页”的最佳实践是什么?

    在这篇文章的评论中 WCF 数据服务 OData SetEntitySetPageSize 和自定义操作的问题 https stackoverflow com questions 5708850 problem with wcf data
  • 如何使用 paypal Rest api 解决 400 错误请求错误?

    我目前正在使用 PayPal payment pro Rest API 测试信用卡付款 我不断收到以下错误 Exception in HttpConnection Execute Invalid HTTP response The remo
  • 阻止 DebuggerStepThroughAttribute 应用于我的非 xsd 生成的部分类?

    我使用 xsd exe 工具根据我的 xml 架构生成一个类 它使用 DebuggerStepThroughAttribute 创建了一个公共分部类 好吧 我为此类创建了另一个部分类文件来编写我的自定义代码 并希望能够单步执行我编写的这段代
  • 用于具有数据库访问的 Python Django 测试的 Visual Studio 测试资源管理器

    从 Visual Studio 测试资源管理器启动测试运行在运行测试之前不会调用数据库创建和 Django setup 我当前的解决方法是调用类似的东西 我将其保留在 config settings test 中 def setUpTest
  • Mapbox 描述框的地图样式

    我是新手 正在研究他的前端技能 我正在设计自己的网站来学习 我正在尝试使用 Mapbox API 实现地图 但无法获取我在地图中使用的描述框的样式 链接到我的网站 http rohanchhabra in 地图位于底部 现在我已经成功在地图
  • 使用 XSLT 显示时间表

    我正在尝试使用 XSLT 显示大学课程时间表 我的 DTS 如下所示 我想在日 小时表中显示所有课程 看起来像这样 请原谅糟糕的设计 问题是 我想做一个for each子句 但仅针对常规数字 而不针对 xml 的某些部分 XSLT
  • 时间从秒到日期的转换问题

    我有以下内容Long变量以秒为单位保存纪元值 我试图将其转换为Date val seconds 1341855763000 val date Date TimeUnit SECONDS toMillis seconds 输出比我预期的要差很
  • 为什么在同一目录中导入模块时出现 ModuleNotFound?

    问题 当我尝试使用以下命令在 linux bash 上激活 main py 时 python3 main py 不断出现如下所示的错误消息 我不明白为什么 File main py line 1 in
  • FluentValidation ModelState.IsValid 始终为 true

    好吧 我的问题是 fluidValidation 中的 modelvalidator 在我的项目中不起作用 并且无论验证状态如何 ModelState IsValid 始终为 true 我提前使用 asp net mvc 4 net 4 5
  • 更改 Devise 的登录 URL

    使用 before filter authenticate 用户时如何更改设备的登录路径 我在帖子控制器中有以下内容 eg class PostsController lt ApplicationController before filt
  • PowerShell 从日期获取工作日名称

    使用 powershell 我想从日期中获取星期几名称 星期五 一直在谷歌搜索 找不到这个 这样我就可以在日期是星期五时执行 IF 语句来执行某些操作 有人可以帮忙吗 Use Get Date生成 DateTime 对象 然后调用其 Day
  • 在 angular2 中,如何获取为 @Input 发送的对象上更改的属性的 onChanges

    我有一个指令 上面有一个 Input接受一个类 Directive selector my directive View directives CORE DIRECTIVES export class MyDirective Input i
  • HTML 中每个
    后缩进一行

    我尝试将 PDF 书变成 mobi 书 html 并且我还想重新创建布局 在那里 在每次中断之后 文本都是一行 这应该可以做到 但我做错了 因为它不起作用 我不想对段落执行此操作 因为默认情况下还包括一个空行 但这些中断并不总是意味着一个全
  • R 中的简化 dput()

    我错过了一种以透明的方式将数据添加到 SO 答案的方法 我的经验是structure对象来自dput 有时会让没有经验的用户感到不必要的困惑 然而 我没有耐心每次将其复制 粘贴到简单的数据框中 并希望将其自动化 类似的东西dput 但是是简
  • 如何在使用 XJC 生成 JAXB 代码期间重命名顶级类名?

    我正在尝试从几个 xsd 生成一些 bean 不幸的是它们都有相同的根元素 我已成功创建用于重命名子元素的 xjc 绑定文件 但找不到选择根节点来更改它的方法 我尝试了以下操作 但出现错误 错误 的 XPath 计算需要生成一个元素
  • C# 中数据网格的行数和列数

    考虑我有一个数据网格 我需要找到数据网格中的行数和列数 我怎样才能在 C 中做到这一点 The DataGrid Items属性返回一个DataGridItemCollection代表着DataGridItems在数据网格中 Each Da
  • AttributeError:部分初始化的模块“cv2”没有属性“gapi_wip_gst_GStreamerPipeline”(很可能是由于循环导入)

    这种情况突然发生 我能够导入 cv2 但现在导入时出现 AttributeError 部分初始化的模块 cv2 没有属性 gapi wip gst GStreamerPipeline 很可能是由于循环导入 错误 我尝试过的事情 1 卸载并安
  • NuGet-repositories.config

    NuGet新手问题 I saw repositories config被添加到 NuGet 包文件夹中 谁能指导我这个文件的用途是什么 谢谢你 该文件主要是 NuGet 实现细节 不应直接处理 它可能会消失或将来发生变化 但作为参考 它包含
  • 在 python 中更新字典

    我已经被这个问题困扰了很长一段时间 只是无法弄清楚 我只是想能够理解我缺少什么以及为什么需要它 我需要做的是创建一个函数 将每个给定的键 值对添加到字典中 参数 key value pairs 将是 key value 形式的元组列表 de
  • 为什么任务的 Result 属性对于非泛型任务 (C# 4.0+) 不可用?

    我正在尝试掌握 NET 4 0 任务并行库概念 在以下 C 4 0 代码片段中 Task t Task Factory StartNew gt Console WriteLine I am the task return res1 如果不能