Napisz dobrze zaprojektowany interfejs asynchroniczny / nie-asynchroniczny

Stoję przed problemem projektowania metod, które wykonują sieciowe operacje we / wy (dla biblioteki wielokrotnego użytku). Przeczytałem to pytanie

c # 5 await / async pattern w projekcie API

a także inne bliższe mojemu zagadnieniu.

Tak więc pytanie brzmi, jeśli chcę zapewnićzarówno asynchroniczne, jak i nie asynchroniczne jak mam je zaprojektować?

Na przykład, aby odsłonić wersję bez asynchronicznej metody, muszę zrobić coś takiego

public void DoSomething() {
  DoSomethingAsync(CancellationToken.None).Wait();
}

i czuję, że to nie jest świetny projekt. Chciałbym zasugerować (na przykład), jak zdefiniować prywatne metody, które mogą być opakowane publicznie, aby zapewnić obie wersje.

questionAnswers(3)

yourAnswerToTheQuestion