最初のアイテムが入力バッファーで受信されたとき、またはデータ ブロックで処理されたときに、1 回限りの通知をサブスクライブできるかどうか疑問に思います。データブロック内にフラグを設定できることは承知していますが、新しいアイテムごとにフラグのチェックを実行するため、オーバーヘッドが発生します。私のデータ ブロックは数百万のアイテムを処理するため、このフラグは不要なオーバーヘッドを追加します。
最初の着信アイテムで通知を受けるより良い方法はありますか?
最初のアイテムが入力バッファーで受信されたとき、またはデータ ブロックで処理されたときに、1 回限りの通知をサブスクライブできるかどうか疑問に思います。データブロック内にフラグを設定できることは承知していますが、新しいアイテムごとにフラグのチェックを実行するため、オーバーヘッドが発生します。私のデータ ブロックは数百万のアイテムを処理するため、このフラグは不要なオーバーヘッドを追加します。
最初の着信アイテムで通知を受けるより良い方法はありますか?
(これが 11 か月遅すぎることは承知していますが、これが良い考えではない理由を誰かが教えてくれることを期待して回答しています。)
最初のメッセージをいつ受信するかを知りたい特定のブロック X があります。上流ブロックがあります。アップストリーム ブロックとブロック X の間に TransformBlock を挿入し、MaxMessages=1 でアップストリーム ブロックからリンクして、最初のメッセージを取得するとすぐにリンク解除されるようにします。それは上流のブロックもブロックします。挿入された TransformBlock の Func は、そのデリゲートで 3 つのことを行います。
言い換えれば...挿入されたブロックは最初のデータ項目を受け入れて渡し、データフローからスプライスされます。
MaxMessages=1 を使用して、通知を処理するブロックへのリンクを作成してみてください。このリンクは、1 つのメッセージを配信した後に削除されます。