TPL DataFlow
に商品を投稿すると、投稿が遅れる可能性のあるメカニズムはありますか?アイテムが処理される前に遅れて送信されたデータフロー
public partial class BasicDataFlowService
{
private readonly ActionBlock<string> workerBlock;
public BasicDataFlowService()
{
workerBlock = new ActionBlock<string>(file => DoWork(file), new ExecutionDataflowBlockOptions()
{
MaxDegreeOfParallelism = 32
});
}
partial void DoWork(string fileName);
private void AddToDataFlow(string file)
{
workerBlock.Post(file);
}
}
AddToDataFlow
の中で、私は遅延を指定できるようにしたいと思います(例えば、我々は30秒間処理を延期したいことを決定した場合)。
TransFormBlock
をnew System.Threading.ManualResetEvent(false).WaitOne(1000);
と使用することを検討しました。
var requeueBlock = new TransformBlock<string, string>(file =>
{
new System.Threading.ManualResetEvent(false).WaitOne(1000);
return file;
});
requeueBlock.LinkTo(workerBlock);
しかし、チェーン内の他のブロックで使用できる不必要なスレッドを消費しているように見えます。