Biorąc pod uwagę metodę transmisji asynchronicznej:Łańcuch wywoławczy dla asynchronizacji/czekania ... Czekaj na czekanie lub zwróć oczekiwane?
public async Task<int> InnerAsync()
{
await Task.Delay(1000);
return 123;
}
i nazywając go przez metody pośrednie, powinny metoda pośrednia czekają metodę transmisji asynchronicznej (IntermediateA) lub jedynie powrotu zadania (IntermediateB)?
pubic async Task<int> IntermediateA()
{
return await InnerAsync();
}
private Task<int> IntermediateB()
{
return InnerAsync();
}
Jak najlepiej mogę powiedzieć z debuggera, zarówno wydają się działać dokładnie tak samo, ale wydaje mi się, że IntermediateB powinien wykonać lepiej, unikając jedno wejście czekają w maszynie państwowej.
Czy to prawda?
Różnica dotyczy obsługi wyjątków. Aby to lepiej zrozumieć, sugeruję, abyś spróbował rzucić wyjątek od wewnętrznej funkcji i zobaczyć, jak działa. –
Dziękuję. W ogóle nie rozważałem obsługi wyjątków. – MikeZ
"Wydaje mi się, że IntermediateB powinien działać lepiej" - tak, ale różnica będzie wynosić kilka nanosekund. Może również zaoszczędzić kilkadziesiąt bajtów w wygenerowanym pliku binarnym. –