我有两个任务,我等待它们完成
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?
我在我正在使用的库中找到了这段代码:
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时都不会创建对象的东西吗?