当我使用贪婪模式时,一切都按预期进行。但是当我启用非贪婪模式时,会抛出以下异常:
未处理的异常。 System.InvalidOperationException:源已完成但未提供要接收的数据。 在System.Threading.Tasks.Dataflow.Internal.Common.InitializeStackTrace(异常异常) --- 先前位置的堆栈跟踪结束 --- 在 System.Threading.Tasks.Dataflow.DataflowBlock.Receive[TOutput](ISourceBlock`1 源,TimeSpan 超时,CancellationToken CancellationToken)
BatchBlock<int> foo = new(1, new()
{
//Greedy = false
});
foo.Post(1);
Console.WriteLine(foo.Receive());
我做错了什么?
.NET版本:8.0.303, Windows 11
以防它将来对某人有帮助(我必须额外使用“BufferBlock”)
BufferBlock<int> buffer = new();
buffer.Post(1);
BatchBlock<int> foo = new(1, new()
{
Greedy = false
});
buffer.LinkTo(foo);
Console.WriteLine(foo.Receive());