我正在使用带有WebJobsSDK的Windows Azure,我想知道,在调用异步方法时,我是否应该在等待的调用中添加ConfigureAwait(false) . 换句话说,SDK是否需要异步方法返回原始上下文才能继续正常运行?
SDK是否需要异步方法返回原始上下文才能继续正常运行?
我不知道这个问题的答案;它可能取决于主机 . 也就是说,SDK本身不需要特定的上下文,但主机可能需要 .
但是,我说这没关系 . 考虑到这个问题:
我应该在Azure WebJobsSDK的顶级调用中使用ConfigureAwait(false)
如果需要上下文,则主机将提供上下文,您不应使用 ConfigureAwait(false) .
ConfigureAwait(false)
如果没有上下文,那么主机将不提供上下文,无论您是否使用 ConfigureAwait(false) 都无关紧要 .
如果提供了上下文但不是必需的,那么使用 ConfigureAwait(false) 将减少您的开销一小部分 - 不会失去睡眠 .
所以,我想说捕获上下文(即不使用 ConfigureAwait(false) )是任何主机上最安全的解决方案 .
1 回答
我不知道这个问题的答案;它可能取决于主机 . 也就是说,SDK本身不需要特定的上下文,但主机可能需要 .
但是,我说这没关系 . 考虑到这个问题:
如果需要上下文,则主机将提供上下文,您不应使用
ConfigureAwait(false)
.如果没有上下文,那么主机将不提供上下文,无论您是否使用
ConfigureAwait(false)
都无关紧要 .如果提供了上下文但不是必需的,那么使用
ConfigureAwait(false)
将减少您的开销一小部分 - 不会失去睡眠 .所以,我想说捕获上下文(即不使用
ConfigureAwait(false)
)是任何主机上最安全的解决方案 .