c# - 循环内嵌套任务

标签 c# task

我正在尝试在循环内实现嵌套任务 - 这是我迄今为止所拥有的模式,但是我还不确定,因为这是我第一次使用并行任务库。

父(层)任务应等待子(节点)任务完成。

    public int NestedTask(IEnumerable<MatchTier> tierNodes)
    {
        var tier = Task<int>.Factory.StartNew(() =>
        {
            Task<int> node = null;

            foreach(var n in tierNodes)
            {
                node = Task<int>.Factory.StartNew(() =>
                {
                    // Task logic goes here

                    return 1; // temp placeholder
                });

                // if a valid value is returned then exit this loop
            }

            return node.Result;

        });

        return tier.Result;
    }

子节点循环直到返回第一个有效值,然后应退出循环,并将有效值传递给父节点。

子节点和父节点也都需要超时。每个子进程将被允许运行大约 3 秒,之后进程将超时并询问下一个节点。

父级的总体超时值约为 15 - 20 秒,在此之后,如果没有收到有效响应,它也应该终止。

这看起来符合逻辑吗?

最佳答案

等待任务完成

node.Wait();

等待任务直到一些蜱虫完成

node.Wait(timeToWait);

或者等待它们全部完成

Task.WaitAll(tasks);

你应该阅读here了解更多信息

关于c# - 循环内嵌套任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460464/

相关文章:

C# IL - 调用构造函数

c# - 在内存中抓取 .net 进程

c# - 秒表与 Task.Wait

git - 自定义Gradle任务失败-找不到GitPush

operating-system - 当没有用户代码运行时,CPU 中会发生什么?

c# - 在 LoadFrom 上下文中绑定(bind)到程序集时如何重现 InvalidCastException

c# - LINQ 到 SQL : Select count rows for each date in a provided range?

c# - Java 的 ForkJoinTask<V> 的 .NET 等价物是什么?

java - 我可以在 jbpm v3.2 中向任务节点添加运行时转换吗?

c# - Autofac 并不总能解决我的依赖关系