私の理解では、ワークフロービルダーが行うことは、最初に式を「構築」し、次にそれを実行することです。let!
最初に式を作成することを考えると、実際に実行する前にステートメントの数を数えることができるはずですよね? そして、進行状況を監視するログを挿入できるはずですか? ビルダーを作り直して、async
進行状況を自動的に報告し、printfn
以下の冗長性をなくすことは可能ですか?
async {
let! a = doSomething1 ()
printfn "%d/%d" 1 4
let! b = doSomething2 a
printfn "%d/%d" 2 4
let! c = doSomething3 b
printfn "%d/%d" 3 4
let! d = doSomething4 c
printfn "%d/%d" 4 4
return d
}
ループの場合は、ループ全体が 1 つのステップであると仮定します。ここでは、最上位の式のみがステップとしてカウントされます。
(まったく新しいワークフロービルダーを作成せずにこれを行う方法がある場合は、それも問題ないと思います)。
私はすでに、a) タスクを反復するだけの「タスク」イテレータを作成する (ただし、処理などを失うuse
ため、不適切になってしまう)、および b) タスク カウンターを作成するというパスを既に通過したことに注意してください。手動でシードして反復するので、もっと良いものを期待しています。