簡単な操作方法はF#でを待っていますか? C#のでC#に似たAsyncメソッドを待つ方法
私はこのようなコードを持っている:
await collection.InsertOneAsync(DO);
var r = collection.ReplaceOneAsync((fun d -> d.Id = DO.Id), DO)
は、だから、私はC#のコードとの類似になる私のF#コードに
LET待つ= ...を作成しました。
私の現在のF#コードはこれです:
let awaits (t: Threading.Tasks.Task) = t |> Async.AwaitTask |> Async.RunSynchronously
let await (t: Threading.Tasks.Task<'T>) = t |> Async.AwaitTask |> Async.RunSynchronously
let Busca (numero) =
let c = collection.Find(fun d -> d.Numero=numero).ToList()
c
let Insere(DO: DiarioOficial) =
//collection.InsertOneAsync(DO) |> Async.AwaitTask |> Async.RunSynchronously
collection.InsertOneAsync(DO) |> awaits
let Salva (DO: DiarioOficial) =
//let r = collection.ReplaceOneAsync((fun d -> d.Id = DO.Id), DO) |> Async.AwaitTask |> Async.RunSynchronously
let r = collection.ReplaceOneAsync((fun d -> d.Id = DO.Id), DO) |> await
r
私は(待ち受け)のawaitのための唯一の定義を持っているしたいのですが、Insereに、型が上のタスクですが、ので、私は何ができる最善のは、これです
FS0001 The type 'Threading.Tasks.Task' is not compatible with the type 'Threading.Tasks.Task<'a>'
場合:サルバ、I型のみを使用がを待っていた場合、私はこのコンパイルエラーを取得するタスク<「T>
です私はこれをどのように行うことができます
let await = ...
単一
にがを待って、それはコンパイルが、私はタスク
非同期(async)から戻り値の型を失い、私はのawaitをマージしたいと待っだけでしょうか?
参照してくださいます。https:/ /stackoverflow.com/questions/8022909/how-to-async-awaittask-on-plain-task-not-taskt – abatishchev
私がしようとしているように、それらの誰もが単純なlet awaitステートメントを持っていません。 – Tony