次のようなコードがある場合:
let asyncReadToEnd (stream:Stream) = async {
// Allocate 4kb buffer for downloading data
let buffer = Array.zeroCreate (4 * 1024)
use output = new MemoryStream()
let reading = ref true
while reading.Value do
// Download one (at most) 4kb chunk and copy it
let! count = stream.AsyncRead(buffer, 0, buffer.Length)
output.Write(buffer, 0, count)
reading := count > 0
// Read all data into a string
output.Seek(0L, SeekOrigin.Begin) |> ignore
use sr = new StreamReader(output)
return sr.ReadToEnd()
}
use stream = httpResponse.GetResponseStream()
asyncReadToEnd stream |> Async.RunSynchronously
単に行うことと比較して、何か得たことがありますか
use stream = httpResponse.GetResponseStream()
use sr = new StreamReader(stream)
sr.ReadToEnd()
どちらの場合も、現在のスレッドをブロックしますが、最初のバージョンを使用してスレッド リソースを解放するという利点はありますか?