Я столкнулся с проблемой разработки методов, которые выполняют сетевые операции ввода-вывода (для библиотеки многократного использования). Я прочитал этот вопрос
С# 5 await/async в дизайне API
а также другие, более близкие к моей проблеме.
Итак, вопрос в том, хочу ли я предоставить метод async и non-async, как я должен их проектировать?
Например, чтобы открыть неасинхронную версию метода, мне нужно сделать что-то вроде
public void DoSomething() {
DoSomethingAsync(CancellationToken.None).Wait();
}
и я чувствую, что это не отличный дизайн. Я хотел бы предложить (например) предложение о том, как определить частные методы, которые могут быть обернуты в публичные, чтобы предоставить обе версии.