我有一组返回precision mediump float;
uniform sampler2D texSampler2D;
varying vec2 texCoord;
void main()
{
gl_FragColor = texture2D(texSampler2D, texCoord);
}
的方法,这些方法必须按顺序运行。我想知道任何任务是否都返回true。无论先前任务的结果如何,都必须运行所有任务。
我不能用a)
Task<boolean>
因为If优化,TaskMethod2()可能无法执行;或b)
var success = (await TaskMethod1() || await TaskMethod2() //etc);
因为它们必须按顺序运行。
这导致了以下尴尬和冗长的代码
var success = await Task.WhenAll(new[] { TaskMethod(), TaskMethod2() //etc});
有没有人知道更优雅的方式,也许是使用ContinueWith?
答案 0 :(得分:5)
为什么不简单:
var success = (await TaskMethod1() |
await TaskMethod2() |
/*etc.*/ );
||
是短路的或,|
是非短路版本。无论结果如何,左右操作数都将被评估。
如果您无论结果如何都需要运行所有任务,请使用|
。