У меня есть простой набор кода, в котором я пытаюсь реализовать интерфейс с асинхронным методом. Реализации до сих пор были теми вещами, которые используют асинхронную часть этого и заканчивают тем, что ожидали вещи. Однако эта новая реализация интерфейса представляет собой простую синхронную операцию - не нужно ждать.
Когда я это реализую, в первую очередь я чувствую себя странно. Во-вторых, Visual Studio подтверждает мое неудобство предупреждением о том, что метод будет работать синхронно, чего я и ожидал, но предупреждение говорит о том, что для VS он тоже пахнет плохо. Есть ли лучший шаблон, которому я должен следовать?
public interface IActivity
{
async Task<bool> DoStuff();
}
//...
List<IActivity> activities = new List<IActivity>(){
new SynchronousActivityA(),
new SynchronousActivityB(),
new AsynchronousActivityC()
};
foreach (var activity in activities){
bool stuff = await activity.DoStuff();
//do things with stuff.
}
Я мог бы просто заставить мою реализацию DoStuff () сделать что-то вроде этого:
await Task.Run(() => DoStuffSynchronously());
Это заставило бы мое предупреждение исчезнуть и почувствовать себя немного более "правильным", но я не уверен, какую пользу это принесло бы по сравнению с написанием реализации DoStuff (), как если бы это была синхронная подпись.