ActorBenchmark.Program.skynetValueTaskAsync C# (CSharp) Method

skynetValueTaskAsync() private static method

private static skynetValueTaskAsync ( long num, long size, long div ) : ValueTask
num long
size long
div long
return ValueTask
        private static ValueTask<long> skynetValueTaskAsync(long num, long size, long div)
        {
            if (size == 1)
            {
                return num;
            }
            else
            {
                long subtotal = 0;
                List<Task<long>> tasks = null;

                for (var i = 0; i < div; i++)
                {
                    var sub_num = num + i * (size / div);
                    var task = skynetValueTaskAsync(sub_num, size / div, div);
                    if (task.IsCompleted)
                    {
                        subtotal += task.Result;
                    }
                    else
                    {
                        if (tasks == null)
                        {
                            tasks = new List<Task<long>>((int)div);
                        }
                        tasks.Add(task.AsTask());
                    }
                }

                if (tasks == null)
                {
                    return subtotal;
                }
                else if (subtotal > 0)
                {
                    tasks.Add(Task.FromResult(subtotal));
                }
                return Task.WhenAll(tasks).ContinueWith(skynetAggregator);
            }
        }