我需要使用一个提供对自己数据库的访问的库。不幸的是,所有方法都是经典同步。我更愿意使用async
方法卸载IO负载,就像我们已经说过的SQL Server一样。
我知道这是一个非常通用的问题,没有太多具体信息。有没有办法转移到那一点,还是太糟糕了?
非常感谢示例和/或链接。
答案 0 :(得分:5)
如果您使用的库中存在某种形式的异步API,则可以使用它来生成async
API TaskCompletionSource<T>
。它可以BeginX
/ EndX
,DoX
有XCompleted
个事件或任何其他形式。
如果不存在这样的情况,您只需就无法创建真正的异步重载。您可以使用ThreadPool
将这些同步调用卸载到Task.Run
线程,但这只会对响应性有所帮助,而不会以任何方式提供性能。