c# - Sap .Net Connector 3 上的异步方法

标签 c# asp.net .net asynchronous sap-dotnet-connector

我在我的 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 methodsTask-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/

相关文章:

C#,动态对象名称?

c# - 对返回字符串的函数的结果进行字符串插值

c# - LinQtoExcel 使用 asp 文件上传

c# - 单独组装和路由中的 Controller

.net - "referenced assembly"如何验证 "caller assembly"的签名/真实性?

.net - ClickOnce:如何在应用程序部署的不同位置部署同一个程序集的两个副本?

c# - method ( new { x=y.property } ) 是什么意思?

c# - 在 ASP.NET MVC 中上传图像

c# - 为什么 C# 会遇到 CSC 文件的错误?

c# - HttpWebResponse.StatusCode 未捕获 500 错误