Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ActionBlock测试方法永远不会完成_C#_Tpl Dataflow - Fatal编程技术网

C# ActionBlock测试方法永远不会完成

C# ActionBlock测试方法永远不会完成,c#,tpl-dataflow,C#,Tpl Dataflow,我有下面的小测试方法来使用ActionBlock。它按预期顺序写出跟踪消息,但从未完成。测试方法永远不存在 我做错了什么?Thx提前 [TestMethod] public async Task ActionBlockTest() { var rnd = new Random(DateTime.Now.Millisecond); var delay = new ActionBlock<int>(item => { var start =

我有下面的小测试方法来使用ActionBlock。它按预期顺序写出跟踪消息,但从未完成。测试方法永远不存在

我做错了什么?Thx提前

[TestMethod]
public async Task ActionBlockTest()
{
    var rnd = new Random(DateTime.Now.Millisecond);
    var delay = new ActionBlock<int>(item =>
    {
        var start = DateTime.Now;
        Trace.WriteLine(string.Format("{0:ss fff} item start processing ({1})", start, item));

        return Task.Delay(item).ContinueWith(t => Trace.WriteLine(string.Format("{0:ss fff} item finished processing ({1}) took {2} ms", DateTime.Now, item, (DateTime.Now - start).TotalMilliseconds)));
    }, new ExecutionDataflowBlockOptions
    {
        BoundedCapacity = 4,
        MaxDegreeOfParallelism = 2
    });

    for(int i = 0; i < 8; i++)
    {
        var d = rnd.Next(100, 1000);
        Trace.WriteLine(string.Format("{0:ss fff} posting {1}", DateTime.Now, d));
        await delay.SendAsync(d);
    }

    await delay.Completion;
}
[TestMethod]
公共异步任务ActionBlockTest()
{
var rnd=新随机(DateTime.Now.毫秒);
变量延迟=新动作块(项=>
{
var start=DateTime.Now;
WriteLine(string.Format(“{0:ss fff}项开始处理({1})”,开始,项));
return Task.Delay(item).ContinueWith(t=>Trace.WriteLine(string.Format({0:ss fff}item已完成处理({1})花费了{2}毫秒),DateTime.Now,item,(DateTime.Now-start.total毫秒));
},新的ExecutionDataflowBlockOptions
{
边界容量=4,
MaxDegreeOfParallelism=2
});
对于(int i=0;i<8;i++)
{
var d=下一个rnd(1001000);
WriteLine(string.Format(“{0:ss fff}posting{1}”,DateTime.Now,d));
等待延迟。发送异步(d);
}
等待延迟。完成;
}
您需要打电话

delay.Complete();
通知block不再有物品到达。然后,在处理所有当前工作(如果有)后,块将进入完成状态并延迟。完成任务将完成。现在,您的
等待延迟。完成将永远不会返回