Ich habe einen Dienst können sagen,Await oder Task.FromResult
public interface ISomeService
{
Task<bool> DoSomeExpensiveCheckAsync(string parameter);
}
Und ich habe diese Klasse den Dienst zu verbrauchen. Es muss nur einige einfache Null-Prüfungen durchführen und dann die Service-Antwort zurückgeben.
public class SomeServiceConsumer
{
private readonly ISomeService _serviceClient;
public SomeServiceConsumer(ISomeService serviceClient)
{
_serviceClient = serviceClient;
}
public async Task<bool> DoSomething1Async(string someParameter)
{
if (string.IsNullOrWhiteSpace(someParameter))
{
return false;
}
return await _serviceClient.DoSomeExpensiveCheckAsync(someParameter);
}
//No async or await keywords
public Task<bool> DoSomething2Async(string someParameter)
{
if (string.IsNullOrWhiteSpace(someParameter))
{
return Task.FromResult(false);
}
return _serviceClient.DoSomeExpensiveCheckAsync(someParameter);
}
}
Sollte ich DoSomething1Async
oder DoSomething2Async
?
Nach this answer, sollte ich nicht mit einer unnötigen await
einzuwickeln, aber dann muss ich Task.FromResult(false)
verwenden für kurzzuschließen wie in DoSomething2Async
Aber nach this answer gibt es Fälle mit try/catch
und using
Aussagen, wo ich sollte eigentlich await
vor Rückkehr.
Bin ich korrigieren dann sagen, dass
Wenn ich
try/catch
oderusing
verwenden müssen dann sollte ichawait
Sonst nicht
await
tun, wenn Sie zurückkehren werden. Und verwenden SieTask.FromResult
für Kurzschlüsse
Ich mag DoSomething1Async
mehr, und wollen tun, dass überall, wenn jemand sagt, dass es Sache :) tut.
Dank Cory. Ich verstehe nicht, wie es die Sicherheit des Verhaltens beeinflusst. Siehe meinen Kommentar zu @ I3arnons Antwort. – labroo
Ich habe in einer Erklärung bearbeitet. –