c# – Parallel execution of async Task methods in loop

I have a program with a async Task<Result> method, than I need to run in parallel from a loop.
Here are two ways I tried, the first one (ResolveWidgetsTaskFactoryAsync) works as expected, but the other (ResolveWidgetsNotParallelAsync) runs synchronously, even if each method returns as Task.
While keeping async Task return type of ComputeAsync, how can I write better my parallel version ?

void Main()
{
    var results = ResolveWidgetsTaskFactoryAsync().Result;
    results.Dump();
    
    results = ResolveWidgetsNotParallelAsync().Result;
    results.Dump();
}

/// <summary>
/// Runs synchronously instead of in parallel
/// /summary>
private async Task<IEnumerable<string>> ResolveWidgetsNotParallelAsync()
{
    var values = new() { "a", "b", "c" };
    var widgets = new List<Task<string>>();

    foreach (var value in values)
    {
        Console.WriteLine("Iteration value : " + value);

        var widgetTask = ComputeAsync(value);
        widgets.Add(widgetTask);        
    }
    
    return await Task.WhenAll(widgets); 
}

/// <summary>
/// Runs as expected, but I'm not sure it's well written
/// /summary>
private async Task<IEnumerable<string>> ResolveWidgetsTaskFactoryAsync()
{
    var values = new () { "a", "b", "c" };
    var widgets = new List<Task<string>>();

    foreach (var value in values)
    {
        Console.WriteLine("Iteration value : " + value);

        widgets.Add(Task<string>.Factory.StartNew(() => ComputeAsync(value).Result));
    }

return await Task.WhenAll(widgets); 
}

public async Task<string> ComputeAsync(string value)
{
    try
    {
Console.WriteLine("Processing value : " + value);

        Random rnd = new Random();
        var wait = rnd.Next(1000, 5000);
        Console.WriteLine("Wait : " + wait);
        Thread.Sleep(wait);

        return await Task.FromResult(value + " done");
    }
    catch (Exception e)
    {       
        return null;
    }
}

Thank you