Метод Async.OnCancel (F#)
Создает ограниченный согласованный обработчик отмены для использования в асинхронном рабочем процессе.
Пространство имен/путь к модулю: Microsoft.FSharp.Control
Сборка: FSharp.Core (в FSharp.Core.dll)
// Signature:
static member OnCancel : (unit -> unit) -> Async<IDisposable>
// Usage:
Async.OnCancel (interruption)
Параметры
Возвращаемое значение
Асинхронное вычисление, которое запускает прерывание в случае отмены до удаления.
Заметки
Например, следующий код создает асинхронное вычисление; если во время этого вычисления происходит отмена в области holder, выполняется действие interruption в потоке, где осуществляется отмена. Это может использоваться для организации асинхронного уведомления вычисления об отмене, например посредством установки флага или отмены регистрации ожидающего выполнения действия ввода-вывода.
async { use! holder = Async.OnCancel interruption ... }
Пример
В следующем примере кода показано использование функции Async.OnCancel.
// This is a simulated cancellable computation. It checks the token source
// to see whether the cancel signal was received.
let computation (tokenSource:System.Threading.CancellationTokenSource) =
async {
use! cancelHandler = Async.OnCancel(fun () -> printfn "Canceling operation.")
// Async.Sleep checks for cancellation at the end of the sleep interval,
// so loop over many short sleep intervals instead of sleeping
// for a long time.
while true do
do! Async.Sleep(100)
}
let tokenSource1 = new System.Threading.CancellationTokenSource()
let tokenSource2 = new System.Threading.CancellationTokenSource()
Async.Start(computation tokenSource1, tokenSource1.Token)
Async.Start(computation tokenSource2, tokenSource2.Token)
printfn "Started computations."
System.Threading.Thread.Sleep(1000)
printfn "Sending cancellation signal."
tokenSource1.Cancel()
tokenSource2.Cancel()
// Wait for user input to prevent application termination.
System.Console.ReadLine() |> ignore
Output
Платформы
Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)
Сведения о версии
Среда выполнения F#
Поддерживается в версиях 2.0, 4.0
Silverlight
Поддерживается в версии 3
См. также
Ссылки
Пространство имен Microsoft.FSharp.Control (F#)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Июль 2010 |
Добавлен пример кода. |
Улучшение информации. |