小编Yga*_*bel的帖子

Task.WhenAll 之后的 .Result 或等待

我有两个任务,我等待它们完成

await Task.WhenAll

之后直接调用获取值会不会有问题.Result

我确信任务已经完成。

`

        Task<int> t1 = Task.FromResult(1);
        Task<int> t2 = Task.FromResult(2);
        await Task.WhenAll(t1, t2);
        var uuu = t1.Result; 
        // or var uuu = await t1;
Run Code Online (Sandbox Code Playgroud)

`

问题是 Visual Studio 设置了VSTHRD103 Call async methods when in an async method警告。

我检查了一下sharplab,结果版本 jit 有点小。

.Result如果我已经用 等待他们之后再打电话,我会遇到僵局吗Task.WhenAll

c# asynchronous task

3
推荐指数
1
解决办法
2747
查看次数

可枚举c#的分配内存

我在我正在使用的库中找到了这段代码:

public IEnumerable<BDDNode> Nodes {
    get {
        if (Low == null && High == null) {
            return new [] { this };
        } else {
            return new [] { this }.Union(Low.Nodes.Union(High.Nodes));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题出在Big模型(万个节点)上,代码分配了数GB的内存.

我有办法改变其他new [] { this }任何在每次调用Nodesgetter时都不会创建对象的东西吗?

c# garbage-collection

1
推荐指数
1
解决办法
214
查看次数

标签 统计

c# ×2

asynchronous ×1

garbage-collection ×1

task ×1