【发布时间】:2020-01-15 00:41:41
【问题描述】:
我在c#代码中有一个异步方法,如演示代码所示--
public async Task<string> Method1()
{
string s = "some text";
await method2();
return s;
}
现在的问题是 - method2 需要几分钟才能完成,但 UI 更新仅取决于 Method1 返回的字符串。 这影响了 UI 性能。有没有办法返回 string 而不等待 await 调用完成。
【问题讨论】:
-
如果你不想等到method2()完成,那么这个函数设计是错误的。你想用这段代码实现什么。大局观可能有助于更好地解决问题。
-
如果您不想等待,请不要等待。
await method2();->method2(); -
如果
Method2抛出异常会发生什么? -
如果返回的字符串不依赖于调用
method2(),则将Method1()拆分为两种方法——一种是返回字符串的非异步方法,另一种是等待method2()的异步方法,如果返回的字符串 does 依赖于method2()那么你别无选择,只能等待它。 -
我们可以在使用 await 调用 method2() 时使用 ConfigureAwait(false)。作为一种好的做法,ConfigureAwait(false) 有助于提高性能。 msdn.microsoft.com/en-us/magazine/jj991977.aspx
标签: c# asynchronous async-await