我在我的 C# .Net v4.5 应用程序中使用 SAP .Net 连接器 3.0.0.42。到目前为止,我可以毫无问题地使用它:
var destination = RfcDestinationManager.GetDestination(destinationName);
var repository = destination.Repository;
var function = repository.CreateFunction(functionName);
function.Invoke(destination);
var resultTable = function.GetTable(tableName); //This can be time consuming
有时,有些调用是耗时的,因为它们是 IO 绑定操作,我想做它async
,因为在等待完成时不阻塞线程,但Sap .Net Connector
不公开任何异步方法(据我所知)。
我阅读了有关生成 async/await 方法和基于任务的异步模式的信息,但是要使用它,我需要低级别async
的方法来向上传播,对吗?例如,从 更改Thread.Sleep
为Task.Delay
。但是,如果没有这样的方法呢?
我的第一个想法是使用Task.Run
,但我读到它是用于 CPU 绑定操作,并且使用它会拾取另一个线程并阻止它,所以它不是真的async
. 另外,如果我开发一个 asp.net 应用程序将从池中获取另一个线程,不是吗?
所以,我的问题是是否可以将同步 IO 绑定方法包装在async
其中?我真的认为我在这里遗漏了一些东西......谢谢!