当我调用 BeginExecuteReader
(SQL) 时,它是否使用 IO 完成端口?是什么让它成为异步的?我应该从 Begin[Operation]()
还是从 IAsyncResult
构造函数的包装器调用它?
最佳答案
does it use IO Completion Ports
也许吧,但这是 native SQL 客户端实现中的一个实现细节。
请记住 SQL Server ADO.NET 调用(本地) native SQL Server 客户端,该客户端将执行与服务器的通信。
What makes it to be async?
它的实现。有不止一种方法可以做到这一点,从伪造它的方法(使用专用工作线程执行阻塞操作)到 IO 完成端口和其他“真正的”异步 API。
Where from should I call it ?
适合您的设计的地方。
for IAsyncResult constructor?
如何使用异步 API(回调传递给 BeginExecuteReader
,轮询返回的 IAsyncResult
的 IsComplete
,等待 IAsyncResult
,使用 Task
转换为 TaskFactory.FromAsync
,使用带有 Observable.FromAsyncPattern
或其他内容的响应式(Reactive)扩展)再次成为您的代码设计的一部分。
提供任何形式的指导的可能性太多。
关于c# - IO 完成端口 (IOCP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217213/