【发布时间】:2009-10-12 16:10:37
【问题描述】:
我如何使用 F# 对暴露 Event-based Asynchronous Pattern 的异步操作类的内置支持,例如 WebClient 类?
let Download(url : Uri) =
let client = new WebClient()
let html = client.DownloadString(url)
html
当我尝试将其更改为使用“让!”在 async 块中(如 Soma 最近的 post 中所述)
let Download(url : Uri) =
async {
let client = new WebClient()
let! html = client.DownloadStringAsync(url)
return html }
我收到一条错误消息:
类型约束不匹配。 unit 类型与 Async 类型不兼容 'unit' 类型与 'Async' 类型不兼容
编辑:我真的在问使用 *Async() 方法的一般问题,WebClient 只是一个简单的例子。 Microsoft says “...您应该尽可能使用基于事件的异步模式 [ 而不是 BeginFoo()/EndFoo() ] 公开异步功能...”所以我认为应该有一种简单的消费方式来自 F# 的任意 *Async() 方法。
【问题讨论】:
标签: f# asynchronous webclient