Async.Catch<'T> Yöntemi (F#)
Belirtilen hesaplaması yapar zaman uyumsuz bir hesaplama oluşturur. Bu hesaplama başarıyla tamamlandıktan sonra bu yöntem döndürür Choice1Of2 ile döndürülen değer. 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 içinde)
// Signature:
static member Catch : Async<'T> -> Async<Choice<'T,exn>>
// Usage:
Async.Catch (computation)
Parametreler
computation
Tür: Async<'T>Türü döndürür giriş hesaplaması ' t.
Dönüş Değeri
Döndüren bir hesaplama bir seçim , = veya özel durum yazın.
Örnek
Aşağıdaki kod örneği nasıl kullanılacağını gösterir Async.Catch çalışacak bir zaman uyumsuz hesaplaması, throw, bir durum.
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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2
Sürüm Bilgisi
F# Çalışma Zamanı
Desteklenir: 2.0, 4.0
Silverlight
Desteklenir: 3
Ayrıca bkz.
Başvuru
Microsoft.FSharp.Control İsim Uzayı (F#)
Değişiklik Geçmişi
Tarih |
Geçmiş |
Nedeni |
---|---|---|
Ağustos 2010 |
Eklenen kod örneği. |
Bilgi geliştirme. |