将同步API包装到Async方法中

Int*_*ary 0 c# asp.net-mvc asynchronous async-await

我的MVC应用程序使用库,此库的一些方法在内部调用WCF服务.从此DLL公开的所有方法都是同步的(它们都没有返回任务或任务),因为我们不拥有该程序集,所以无法将它们转换为异步API.

但是,因为这些方法调用WCF服务,所以它们是网络绑定的(因此理想情况下它们应该是异步的).

我想在我的MVC应用程序中使用异步控制器操作,以使其更具可伸缩性.我的问题是当一个方法本质上是同步时,如何使整个方法管道等待.

异步操作 - >等待异步方法 - >等待异步方法2 - >库中的同步方法?

我应该使用TaskCompletionSource还是Task.FromResult来包装库方法调用?

另外,如果我使用上述方法,我的代码会比同步版本更具可扩展性吗?

Ste*_*ary 5

我的问题是当一个方法本质上是同步时,如何使整个方法管道等待.

你不能.唯一的解决方案是重写dll.

我应该使用TaskCompletionSource还是Task.FromResult来包装库方法调用?

都不是.

另外,如果我使用上述方法,我的代码会比同步版本更具可扩展性吗?

不,它会稍微可扩展性.