我在我的 C# .Net v4.5 应用程序中使用 SAP .Net Connector 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 绑定(bind)操作,所以我想让它成为 async
,因为在等待完成时不会阻塞线程,而是 Sap 。 Net Connector
不公开任何异步方法(据我所知)。
我读到了 producing async/await methods和 Task-based async pattern ,但要使用它,我需要低级别的 async
方法向上传播,对吗?例如,从 Thread.Sleep
更改为 Task.Delay
。但是,如果没有这样的方法怎么办?
我的第一个想法是使用 Task.Run
但我读到它用于 CPU 绑定(bind)操作,使用它会选择另一个线程并阻止它,所以它不是真正的 异步
。另外,如果我开发一个 asp.net 应用程序将从池中获取另一个线程,不是吗?
所以,我的问题是是否可以将同步 IO 绑定(bind)方法包装在async
方法中?我真的认为我在这里遗漏了一些东西...谢谢!
最佳答案
插件中似乎没有 native 支持,但正如 Case Ahr 所建议的那样 here你可以在你的项目中完成。
关于c# - Sap .Net Connector 3 上的异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882639/