나는기다리고 있습니다 또는 Task.FromResult
public interface ISomeService
{
Task<bool> DoSomeExpensiveCheckAsync(string parameter);
}
, 하나 개의 서비스가 말할 수있는 그리고 서비스를 소비하는이 클래스를 가지고있다. 몇 가지 간단한 null 검사를 수행 한 다음 서비스 응답을 다시 반환하면됩니다.
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);
}
}
나는 DoSomething1Async
또는 DoSomething2Async
해야합니까? this answer에 따르면,
나는 불필요한 await
으로 포장하지 말아야하지만 나는 DoSomething2Async
같이 shortcircuiting 그러나 try/catch
및 using
계산서를 가진 경우가 this answer에 따라 대한 Task.FromResult(false)
를 사용할 필요가 어디 전엔 await
을해야 돌아 오는 중. 당신은 반환하려는 경우 try/catch
또는 using
그때 내가 await
그렇지 않으면하지 await
해야 사용해야하는 경우
, 내가 다음 말에 수정하고있다. 그리고 단락
에 대한 Task.FromResult
을 사용 나는 DoSomething1Async
더 좋아 누군가가 말한다 사방 경우가 : 문제가 나던 것을하고 싶어.
감사합니다. 나는 그것이 행동의 안전에 어떻게 영향을 미치는지 이해하지 못한다. @ I3arnon의 답변에 대한 내 의견을 참조하십시오. – labroo
설명을 편집했습니다. –