如何在C#中围绕第三方IO库编写异步包装器

时间:2015-01-08 15:05:08

标签: c# .net io async-await

我需要使用一个提供对自己数据库的访问的库。不幸的是,所有方法都是经典同步。我更愿意使用async方法卸载IO负载,就像我们已经说过的SQL Server一样。

我知道这是一个非常通用的问题,没有太多具体信息。有没有办法转移到那一点,还是太糟糕了?

非常感谢示例和/或链接。

1 个答案:

答案 0 :(得分:5)

如果您使用的库中存在某种形式的异步API,则可以使用它来生成async API TaskCompletionSource<T>。它可以BeginX / EndXDoXXCompleted个事件或任何其他形式。

如果不存在这样的情况,您只需就无法创建真正的异步重载。您可以使用ThreadPool将这些同步调用卸载到Task.Run线程,但这只会对响应性有所帮助,而不会以任何方式提供性能。