异步编程APM VS EAPAPM、VS、EAP

由网友(赌注)分享简介:什么是真正的异步编程模型和基于事件的格局台异步差异? 该方法的使用是什么时候?Which approach to use and when?推荐答案在异步编程模型的( APM )是您与看到模型BeginMethod(...)和 EndMethod(...)对。例如下面是一个插槽使用的 APM 执行:For...

什么是真正的异步编程模型和基于事件的格局台异步差异?

该方法的使用是什么时候?

Which approach to use and when?

推荐答案

在异步编程模型的( APM )是您与看到模型BeginMethod(...) EndMethod(...)对。

例如下面是一个插槽使用的 APM 执行:

For example here is a Socket using the APM implementation:

 var socket = new Socket(AddressFamily.InterNetwork, 
                        SocketType.Stream, ProtocolType.Tcp);

 // ...

 socket.BeginReceive(recvBuffer, 0, recvBuffer.Length, 
                     SocketFlags.None, ReceiveCallback, null);

 void ReceiveCallback(IAsyncResult result)
 {
   var bytesReceived = socket.EndReceive(result);

   if (bytesReceived > 0) { // Handle received data here. }

   if (socket.Connected)
   {
     // Keep receiving more data...
     socket.BeginReceive(recvBuffer, 0, recvBuffer.Length, 
                         SocketFlags.None, ReceiveCallback, null);
   }
 }

在基于事件的异步模式的( EAP )是您与看到模型MethodAsync(...) CancelAsync(...)对。通常有一种已完成事件。 的BackgroundWorker 就是这种模式的一个很好的例子。

The Event-based Asynchronous Pattern (EAP) is the model you see with MethodAsync(...) and CancelAsync(...) pairs. There's usually a Completed event. BackgroundWorker is a good example of this pattern.

作为的 C#4.5 的,两人都被替换为异步/计谋模式,这是使用的任务并行库(太平人寿)。你会看到他们打上异步