3
我重寫了一些C#在這個實驗室中F#:https://github.com/Microsoft/TechnicalCommunityContent/tree/master/IoT/Azure%20Stream%20Analytics/Session%202%20-%20Hands%20On異步等待在F#
我在練習6,#17 - 創建SimpleEventProcessor
類型。
我要實現的CloseAsync
方法
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();
}
}
,我開始是這樣的:
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 –
對不起,我誤解了你的問題,不知怎的,我以爲你是從Task轉換到Async,除了從C#轉到F#。 – Tarmil