如何使用F#的內置支持異步操作類暴露Event-based Asynchronous Pattern如WebClient類?使用F#的內置異步支持與* Async()方法
let Download(url : Uri) =
let client = new WebClient()
let html = client.DownloadString(url)
html
當我試圖改變這個使用「let!」在異步塊
let Download(url : Uri) =
async {
let client = new WebClient()
let! html = client.DownloadStringAsync(url)
return html }
(比如在索瑪最近post描述)我得到一個錯誤信息:
類型約束不匹配。該類型單位不與型異步<兼容「一>型‘單位’不與兼容型」異步<‘一>’
編輯:我真的問使用的一般問題* Async()方法,WebClient只是一個簡單的例子。微軟says「......你應該儘可能地使用基於事件的異步模式[而不是BeginFoo()/ EndFoo()]公開異步特性......」所以我認爲應該有一種簡單的方法來使用任意*來自F#的Async()方法。
那麼這個問題 - 使用* Async()方法如何在一般情況下處理?我是否必須每次都寫一個自己的F#擴展方法? – 2009-10-12 16:46:06
不再是:http://msdn.microsoft.com/en-us/library/ms228966.aspx「...你應該儘可能使用基於事件的異步模式暴露異步功能......」 – 2009-10-12 17:37:04