c# .net f# timeout async-ctp

c# - Async CTP y tiempos de espera



.net f# (1)

Ni siquiera recuerdo mencionar los tiempos de espera, pero tomaré su palabra para eso :)

Es bastante fácil componer tareas para lograr un tiempo de espera: crear una segunda tarea que es un "retraso" y luego esperar a que se complete esa o la tarea original. Cualquiera que llegue primero, cancele el otro si es factible (con un token de cancelación). La tarea recién creada se completará con el resultado de la operación principal (si fue exitosa) o una excepción si el "retraso" finalizó primero.

No veo nada de eso directamente admitido en AsyncCtpLibrary.dll, pero puede compilarlo de forma razonablemente fácil con las herramientas que se proporcionan. Es posible que desee consultar los documentos " Descripción general de patrones asíncronos basados ​​en tareas " y " Flujo de datos TPL " para ver si también lo cubren.

Empecé a ver la presentación de Jon Skeet en C # Async CTP . Tartamudeó cuando se trataba de especificar tiempos de espera.

Desde una exposición bastante limitada a F #, existe una forma intuitiva, centralizada y simple de especificar tiempos de espera excedidos. Entonces, me pregunto cuál es el estado actual de las cosas: ¿puede C # Async CTP hacer todas las cosas que hace F # async block runner? ¿Hay algún documento que describa las diferencias y limitaciones?

Detalles adicionales: en F #, el corredor de bloques asíncronos proporciona una forma de especificar lo siguiente:

  1. Flujo de excepción
  2. Flujo de tiempo de espera
  3. Flujo de cancelación
  4. Extensibilidad a las tres características anteriores

Aquí hay una manera de hacer estas cosas en F #: Orden de argumentos y operador de tubería derecha