如何使用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