代码之家  ›  专栏  ›  技术社区  ›  Sasha

c中的异步方法调用模式是如何工作和实现的?

  •  0
  • Sasha  · 技术社区  · 17 年前

    我正在根据 asynchronous method invocation . 它通常是如何实现的(最好在生产中实现)?

    • 它是如何工作的?
    • 怎么用的?
    • 如何实施?
    2 回复  |  直到 17 年前
        1
  •  4
  •   Lucero    17 年前

    这种模式通常如下:

    • 你有一个 BeginXXX 方法接收 ref 参数加a AsyncCallback 委托(可以为空)和状态对象引用(也可以为空)并返回 IAsyncResult . 此方法被调用以启动调用,它或多或少会立即返回。
    • 那么你有一个 EndXXX 采取的方法 偏斜 开始 操作加任何 裁判 out 在调用完成时调用的参数(在回调之后,等待 event in the IAsyncResult 或者通过阻塞)。这个 尾数 将返回方法结果(如果不是void方法)或引发异常(如果该方法引发异常)。

    看看Stream类或任何委托,它们都提供了这些签名的示例。此外,还有一个完整的 description of async calls on MSDN .

        2
  •  0
  •   Richard    17 年前

    该模式通常通过.NET的 IOCompletion port . 这允许一个小线程池为完成的许多IO操作提供服务,其中 BeginX 调用适当的Win32 API来启动异步操作,IAsyncResult的实现保持任何状态(通过 OVERLAPPED 实例),以及 EndX 正在获取结果。

    细节(和其他方法)根据所讨论的资源而有很大的不同。

    推荐文章