Async.Catch<'T> Yöntemi (F#)
Belirtilen hesaplaması yürütülür bir zaman uyumsuz hesaplaması oluşturur. Bu hesaplama başarılı bir şekilde tamamlandıktan sonra bu yöntem döndürür Choice1Of2 döndürülen değere sahip. Bu hesaplama bitmeden önce özel bir durum harekete geçirirse Choice2Of2 özel durumu ile dönün.
Ad alanı/modül yolu: Microsoft.FSharp.Control
Derleme: FSharp.Core (FSharp.Core.dll),
// Signature:
static member Catch : Async<'T> -> Async<Choice<'T,exn>>
// Usage:
Async.Catch (computation)
Parametreler
computation
Türü: zaman uyumsuz<'T>Türü döndürür giriş hesaplaması ' t.
Dönüş Değeri
Sayı hesaplaması bir seçim , = veya bir özel durum yazın.
Örnek
Aşağıdaki kod örneği nasıl kullanılacağını gösteren Async.Catch bir özel durum yaratabilir zaman uyumsuz bir hesaplaması çalıştırmak için.
open System
open System.IO
let writeToFile filename numBytes =
async {
use file = File.Create(filename)
printfn "Writing to file %s." filename
do! file.AsyncWrite(Array.zeroCreate<byte> numBytes)
}
let readFile filename numBytes =
async {
use file = File.OpenRead(filename)
printfn "Reading from file %s." filename
do! file.AsyncRead(numBytes) |> Async.Ignore
}
let filename = "BigFile.dat"
let numBytes = 100000000
let result1 = writeToFile filename numBytes
|> Async.Catch
|> Async.RunSynchronously
match result1 with
| Choice1Of2 _ -> printfn "Successfully wrote to file."; ()
| Choice2Of2 exn ->
printfn "Exception occurred writing to file %s: %s" filename exn.Message
// Start these next two operations asynchronously, forcing an exception due
// to trying to access the file twice simultaneously.
Async.Start(readFile filename numBytes)
let result2 = writeToFile filename numBytes
|> Async.Catch
|> Async.RunSynchronously
match result2 with
| Choice1Of2 buffer -> printfn "Successfully read from file."
| Choice2Of2 exn ->
printfn "Exception occurred reading from file %s: %s" filename (exn.Message)
Platformlar
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Sürüm Bilgisi
F# Çekirdek Kitaplığı sürümleri
Desteklenen: 2.0, 4.0, Portable