esto es estándar interface based programming.
Al devolver un IAsyncResult, el marco es libre de cambiar la implementación interna en un momento posterior, sin romper el código escrito contra la API del marco. Esto, en esencia, nos dice, como desarrolladores, que no nos debería importar qué tipo de implementación se utiliza, siempre que se cumpla la interfaz (IAsyncResult).
Si, en cambio, se devolviera la clase real AsyncResult, el cambio a una clase diferente rompería el código existente.
Además, esto permite que el marco utilice la misma interfaz (IAsyncResult) en varios lugares, independientemente de si la clase AsyncResult es o no adecuada. Me he aprovechado de esto, personalmente, ya que he creado mis propias funciones asincrónicas que devuelven IAsyncResult respaldado por una clase diferente, que almacenaba la información que era importante para mí. Esto permite que mi propio código funcione como el marco, sin restringirme a la implementación del marco.
Tiene sentido. Gracias por su ayuda – AspOnMyNet
Heaven nos ayuda si necesitan agregar otra función a esa interfaz, sin embargo. – Will