F# 正在等待F中的IAsyncOperation#

F# 正在等待F中的IAsyncOperation#,f#,windows-store-apps,async-await,iasyncoperation,F#,Windows Store Apps,Async Await,Iasyncoperation,我在F#中有以下代码: i、 e public异步任务CreateSampleDataFromUrl(字符串路径) { var uri=新uri(路径); var file=wait-StorageFile.getFileFromApplicationUrisync(uri); var jsonText=await FileIO.ReadTextAsync(文件); 返回JsonObject.Parse(jsonText); } 问题是我不知道如何在F#中等待IAsyncOperation。通

我在F#中有以下代码:

i、 e

public异步任务CreateSampleDataFromUrl(字符串路径)
{
var uri=新uri(路径);
var file=wait-StorageFile.getFileFromApplicationUrisync(uri);
var jsonText=await FileIO.ReadTextAsync(文件);
返回JsonObject.Parse(jsonText);
}
问题是我不知道如何在F#中等待
IAsyncOperation
。通常的
let不起作用。i、 e.以下内容未能编译:

async {
   let! file = StorageFile.GetFileFromApplicationUriAsync(uri)
出现编译器错误时:


错误FS0001:此表达式的类型应为Async我认为您的解决方案很好。如果您正在寻找一种更好的语法,那么将其滚动到这样一个函数中(没有可能是免费的类型注释)怎么样


let await):异步看起来好像
AsTask()
是可以的,因为WinRT有自己的基于
IAsyncOperation
的异步模型。请问,您是如何在F中使用StorageFile的。我曾尝试在F#portable Library(配置文件7和47)中打开Windows.Storage,但做不到。我喜欢它。这个
async {
   let! file = StorageFile.GetFileFromApplicationUriAsync(uri)
 let! file = StorageFile.GetFileFromApplicationUriAsync(uri).AsTask() |> Async.AwaitTask
let await<'a> (op: IAsyncOperation<'a>) : Async<'a> =
   op.AsTask() |> Async.AwaitTask
async {
   let! file = await <| StorageFile.GetFileFromApplicationUriAsync(uri)
   ...
}