.NET异步 - 我什么时候需要关心在等待之后使用相同的synchronizationcontext?

时间:2018-04-21 09:18:08

标签: .net async-await synchronizationcontext

所以,如果我等待一个函数,我有一些选择:

var retVal = await someAwaitableFunction();
continuation code...

var retVal = await someAwaitableFunction().ConfigureAwait(false);
continuation code...

后者,正如我所理解的那样,"呃,当继续发生"时,我真的不需要你用相同的syncContext重新输入。前者确保了它。

那很好 - 只是在我看来你想要重用同步上下文的情况很少。似乎只是WPF - 你想要保证UI线程/上下文是继续你的那个,所以你可以使用UI元素。

还有其他情况吗?我在实例中并没有真正见过,而且一直在讨论的是......我知道的UI线程情况。

提前致谢!

1 个答案:

答案 0 :(得分:0)

除非你真的知道自己在做什么,否则不要试图搞乱异步。所有同步上下文的东西都有很多难以找到的问题,如果你遇到麻烦,很难调试。

即使这不是问题的直接答案,我建议你不要使用所有高级功能,除非你真的需要它们,你也必须有充分的理由。所以你只需要使用普通等待,99%都应该没问题,而且除非你正在做一些必须非常快的真正核心功能,否则性能还是不错的。