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

我应该在什么时候使用ConfigureAwait(true)?

司马璞
2023-03-14

有没有人遇到过使用配置Await(true)的场景?由于true是默认选项,我看不到你什么时候会使用它。

共有3个答案

越骏俊
2023-03-14

由于true是默认选项,我看不出您何时会使用它。

一个显而易见的用例是,当您希望确保每次等待某件事情时,都明确而慎重地选择如何处理同步上下文。

来自http://new media labs . co . za/blog/post/synchronization contexts的策略示例:

在NML,我们更喜欢明确说明我们希望任务继续发生的方式。因此,即使任务的默认值为ConfigureAwait(true),我们仍然将其指定为这样,以便始终了解“幕后”发生的情况。

虽然为了提高可读性,他们直接使用扩展而不是配置Await(true):

然而,当您查看大量代码时,有些带有configurewait(true ),有些带有configurewait(false ),不容易发现它们的不同之处。所以我们要么使用configurewait(false),要么使用一个有用的扩展方法ContinueOnCapturedContext()。它做同样的事情,但只是以更直观的方式将其与configurewait(false)区分开来。

锺离鸿
2023-03-14

我可以看到的一种可能性是,如果你在库中编写代码,并且你想让你的调用者决定是否适合继续原始上下文1(尽管我通常主张永远不要从库代码中继续原始上下文)

您的调用者将传递一个bool参数或设置一些配置值,因此您直到运行时才知道正确的参数值是什么。

对于像这样的 API,这是具有无参数变体和具有单个参数的变体的 API 的一般答案类型,其中无参数变体记录为“与具有已知值 x 的单个参数变体相同” - 如果您直到运行时才知道要传递的正确值是什么,那么您应该调用具有正确运行时值的单个参数变体。

1 例如,您的呼叫者也提供一名代理人。您的调用方将知道(并可以决定)该委托是否需要返回到原始上下文。

谢修真
2023-03-14

true尝试将继续列表返回捕获的原始上下文;否则为false。

这实际上更像是说配置等待(true)就像使用。继续(t=

 类似资料:
  • 问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync

  • 问题内容: 我对使用和翻译有疑问。我了解到,在模型中,我应该使用。但是还有其他地方我也应该使用吗?表单定义呢?它们之间是否存在性能差异? 编辑: 还有一件事。有时候,代替被使用。正如文档所述,仅在将字符串显示给用户之前,才将字符串标记为要翻译,并在可能的最新情况下进行翻译,但是我在这里有点困惑,这与功能相似吗?我仍然很难决定在模型和表格中应该使用哪个。 问题答案: ugettext() 与 uge

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

  • 我想知道什么时候可以有效地使用。我不确定到底有多有用,有三个原因。 (请将start和end视为整数。) > 如果我想要一个数组,,下面的代码要快得多。 我不认为仅仅获取从到的数字是有用的。我可以将