使用任何具有动态大小的列表的时间

问题描述 投票:0回答:1

有人知道在等待后将元素添加到Task.WhenAny(IEnumerable<Task>)时,list是否会按预期工作?即:

class lunch {

    private List<Task> lunchTasks = new List<Task>();

    public void MakeLunch() {
        Task makeSandwich = new Task();
        Task eatSandwich = new Task();
        makeSandwich.Delay(-1);
        eatSandwich.Delay(-1);
        lunchTasks.Add(makeSandwich);
        lunchTasks.Add(eatSandwich);
        await Task.WhenAny(lunchTasks).ConfigureAwait(false);
    }

    public void CleanUp() {
        Task cleanUp = Task.CompletedTask;
        lunchTasks.Add(cleanUp);
    }
}

假设CleanUp()之后异步调用MakeLunch()MakeLunch()会返回/完成吗?

c# task-parallel-library
1个回答
0
投票

没有WhenAnyWhenAny方法都立即使所提供的枚举值成为防御性副本,如WhenAll中所示:

WhenAll

因此以后对可枚举的任何修改将被忽略。

© www.soinside.com 2019 - 2024. All rights reserved.