我正面临着设计执行网络I/O(对于可重用库)的方法的问题.我读过这个问题
以及更接近我的问题的其他人.
所以,问题是,如果我想提供异步和非异步方法我将如何设计这些?
例如,为了公开方法的非异步版本,我需要做类似的事情
public void DoSomething() {
DoSomethingAsync(CancellationToken.None).Wait();
}
Run Code Online (Sandbox Code Playgroud)
我觉得这不是一个很棒的设计.我想建议(例如)如何定义可以包含在公共方法中的私有方法以提供两个版本.
Ste*_*ary 62
如果您需要最易维护的选项,则只提供一个async
API,该API在不进行任何阻塞调用或使用任何线程池线程的情况下实现.
如果您确实想要同时使用async
API和同步API,那么您将遇到可维护性问题.你真的需要实现它两次:一次async
和一次同步.这两种方法看起来几乎完全相同,因此初始实现很容易,但最终会得到两个几乎完全相同的方法,因此维护是有问题的.
特别是,没有一种简单的方法来制作一个async
或同步的"包装器".Stephen Toub有关于这个主题的最佳信息:
(这两个问题的简答都是"不")