Асинхронный CTP и тайм-ауты - PullRequest
7 голосов
/ 05 мая 2011

Я начал смотреть презентацию Джона Скита на C # Async CTP . Он заикался, когда дело дошло до указания таймаутов.

Исходя из довольно ограниченного воздействия F #, существует интуитивно понятный, централизованный и простой способ задания тайм-аутов. Итак, мне интересно, каково текущее состояние дел: может ли C # Async CTP выполнять все то, что делает F # async block runner? Есть ли документ, который описывает различия и ограничения?


Дополнительные детали: В F # асинхронный блок запуска предоставляет способ указать следующее:

  1. Поток исключений
  2. Поток времени ожидания
  3. Поток отмены
  4. Расширяемость вышеупомянутых трех функций

Вот способ сделать это в F #: Порядок аргументов и оператор правого канала

1 Ответ

3 голосов
/ 05 мая 2011

Я даже не помню упоминания о тайм-аутах - но я верю вашему слову:)

Довольно легко составить задачи для достижения тайм-аута: создать вторую задачу, которая является «задержкой»и затем дождитесь завершения той или другой задачи.В зависимости от того, кто доберется первым, отмените другое, если это возможно (с токеном отмены).Вновь созданная задача завершится либо результатом основной операции (если она выполнена успешно), либо исключением, если «задержка» закончилась первой.

Я не вижу что-нибудь подобноенапрямую поддерживается в AsyncCtpLibrary.dll, но вы можете легко построить его из инструментов, которые предоставляются .Возможно, вы захотите посмотреть в документах « Обзор асинхронных шаблонов на основе задач » и « TPL Dataflow », чтобы узнать, покрывают ли они их тоже.

...