私はF#にこのラボでのC#の一部を書き換えています:https://github.com/Microsoft/TechnicalCommunityContent/tree/master/IoT/Azure%20Stream%20Analytics/Session%202%20-%20Hands%20On非同期待つFで#
私は演習6、#17の午前 - SimpleEventProcessor
タイプを作成します。
私はC#
async Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason)
{
Debug.WriteLine("Processor Shutting Down. Partition '{0}', Reason: '{1}'.", context.Lease.PartitionId, reason);
if (reason == CloseReason.Shutdown)
{
await context.CheckpointAsync();
}
}
CloseAsync
方法
を実装したいと私はこのように始まっ:
member this.CloseAsync(context, reason) =
Debug.WriteLine("Processor Shutting Down. Partition '{0}', Reason: '{1}'.", context.Lease.PartitionId, reason)
match reason with
| CloseReason.Shutdown -> await context.CheckpointAsync()
| _ ->()
が、私は2つの質問があります:私は返すにはどうすればよい
- をF#の世界で待っていますか?
- どのように私はNOTの場合 - > C#を返すだけでその可能性を無視します。
IEventProcessor CloseAsyncはTaskを返します。だから| CloseReason.Shutdown - > context.CheckpointAsync()が機能します。空のタスクを返す方法を理解する必要があります –
これはそれでした:一致理由 | CloseReason.Shutdown - > context.CheckpointAsync() | _ - > Task.CompletedTask –
ああ、申し訳ありませんが、私はあなたの質問を誤って読んで、何とか私はあなたがC#からF#に行くことに加えて、タスクから非同期に変換していると思った。 – Tarmil