当前位置: 首页 > 知识库问答 >
问题:

对于C#任务,在检查。result之前需要Wait()?

柴宝
2023-03-14

编写在非异步方法中,这段代码有什么不同吗...

return MyMethodAsync().Result;
var task = MyMethodAsync();

task.Wait();

return task.Result;

也就是说,这两者的行为是相同的吗?

第二个代码片段没有阻塞正在执行的线程(非Async方法调用MyMethodAsync())而第一个代码片段阻塞了线程),这是否正确?

共有1个答案

吴俊晤
2023-03-14

是的,最终的结果是一样的:如果您费力地去做,最终它可能会调用internalwait

http://referencesource.microsoft.com/#mscorlib/system/threading/tasks/future.cs,e1c63c9e90fb2f26

 类似资料:
  • 问题内容: 我正在尝试学习pthread_cond_wait的基础知识。在所有用法中,我都可以看到 要么 我的问题是,我们只想cond_wait因为条件为假。那我为什么要忍受明确地放置一个if / while循环的痛苦。我可以理解,在不进行任何if / while检查的情况下,我们将直接击中它,根本不会返回。条件检查是仅用于解决此目的,还是具有其他意义。如果它用于解决不必要的条件等待,则进行条件检

  • 我最近开始了一份新工作,在那里使用了Eclipse和Gradle。为了生成eclipse项目文件,我们运行gradle eclipse任务。现在,我的一些同事说,在运行gradle Eclipse任务之前关闭Eclipse很重要。但是当我看Gradle eclipse插件的文档时https://docs.gradle.org/6.8.1/userguide/eclipse_plugin.html,

  • 我有一个扫描器,它由我的类中的调用。 循环的工作方式是,如果选择了“n”或“n”,它将再次调用构造函数。但是,由于这两种类型是字符串数据类型,构造函数首先调用一个名称,因此它要么将“n”或“n”识别为名称,要么跳过整个名称。我怎么解决这个? 下面的Player类 下面是以作为第一个名称输入的示例输出: 如您所见,问题出现在之后。

  • 芹菜是否支持在给定任务 ID 之前返回挂起的任务编号? 例如,没有芹菜工人启动,我推task1、task2、task3,这三个都是挂起的,现在,我想要的是,如果我给task3,它告诉我在3之前有两个挂起的任务。 我使用芹菜芹菜4.1,rabbitmq 3.5.4作为代理,redis 3.2.9作为结果后端。 虽然我可以通过管理API(例如,从pyrabbit包中获取get_queue_depth)

  • 我需要一个命令来检查tomcat服务器中的permgenspace。最基本的是,如果我遇到了permgenspace错误,我希望看到那里的空间。 我使用以下命令来检查permgenspace,即使Tomcat可能会遇到java.lang.OutOfMemoryError:permGen空间错误,它总是显示相同的大小。 错误:找不到或加载主类 tomcat 请就此建议我。

  • 我看过一些关于用C生成随机数的指南:有两件事让我感到疑惑: > < li >据说除了stdlib.h和time.h库之外,我还必须包含math.h库才能运行,为什么?(afaik srand和rand函数在stdlib中)? < li> 在示例中,srand函数的编写方式如下: 我使用的是代码块,它在没有无符号int和数学库的情况下可以正常工作,那么为什么它们在示例中包含它呢? 谢谢!