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.