Попытка понять новый шаблон async/await, у меня есть один вопрос, на который я не могу найти ответ, а именно, если я должен украсить мои методы с помощью async, если я намереваюсь вызывать эти методы из других асинхронных функций или просто верните Task
где это необходимо?
Другими словами, какой из этих классов A, B или C является лучшим и почему?
class A<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public async Task<T> foo2() //Could be consumed
{
return await foo3();
}
private async Task<T> foo3() //Private
{
return await Task.Run(...);
}
}
class B<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public async Task<T> foo2() //Could be consumed
{
return await foo3();
}
private Task<T> foo3() //Private
{
return Task.Run(...);
}
}
class C<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public Task<T> foo2() //Could be consumed
{
return foo3();
}
private Task<T> foo3() //Private
{
return Task.Run(...);
}
}
Кажется излишним переопределять методы, поэтому я, естественно, склоняюсь к C
, но в то же время мне неловко работать с Task<T>
, если вы не используете ключевое слово await
.