C# 防止异步代码中的if()快捷方式
我有一组方法返回一个C# 防止异步代码中的if()快捷方式,c#,C#,我有一组方法返回一个任务,它必须按顺序运行。我想知道是否有任何任务返回true。无论前面任务的结果如何,都必须运行所有任务 我不能用a) 因为由于If优化,TaskMethod2()可能无法执行;或b) 因为它们必须按顺序运行 这导致了以下笨拙而冗长的代码 var success = await TaskMethod1(); if (await TaskMethod2()) success = true; // Repeated for all tasks 有人知道更优雅的方式吗,也许是
任务
,它必须按顺序运行。我想知道是否有任何任务返回true。无论前面任务的结果如何,都必须运行所有任务
我不能用a)
因为由于If优化,TaskMethod2()可能无法执行;或b)
因为它们必须按顺序运行
这导致了以下笨拙而冗长的代码
var success = await TaskMethod1();
if (await TaskMethod2())
success = true; // Repeated for all tasks
有人知道更优雅的方式吗,也许是使用ContinueWith?为什么不简单地:
var success = (await TaskMethod1() |
await TaskMethod2() |
/*etc.*/ );
|
是短路或,而|
是非短路版本。无论左操作数和右操作数的结果如何,都将对其求值
如果无论结果如何,都需要运行所有任务,那么使用|
为什么不简单地:
var success = (await TaskMethod1() |
await TaskMethod2() |
/*etc.*/ );
|
是短路或,而|
是非短路版本。无论左操作数和右操作数的结果如何,都将对其求值
如果无论结果如何,都需要运行所有任务,那么使用
|
为什么不使用ContinueWith()来正确地链接它们?这毕竟是你有任务要做的事情之一()@Christopher,在等待什么呢?这正是异步任务的排序操作。@Christopher是使用ContinueWith available链接任务结果的结果?为什么不使用ContinueWith()正确链接它们?这毕竟是你有任务要做的事情之一()@Christopher,在等待什么呢?这正是异步任务的顺序操作。@Christopher是使用ContinueWith available的链接任务结果的结果?为什么?我甚至不知道|。谢谢@InBetween@AlanClark:人们通常认为|
只对整数有效,只对位逻辑有效,但事实上它对布尔值也很有效。我注意到您也可以将程序编写为boolsuccess=false;成功|=等待M1();成功|=等待M2()代码>为什么?我甚至不知道|。谢谢@InBetween@AlanClark:人们通常认为|
只对整数有效,只对位逻辑有效,但事实上它对布尔值也很有效。我注意到您也可以将程序编写为boolsuccess=false;成功|=等待M1();成功|=等待M2()代码>
var success = (await TaskMethod1() |
await TaskMethod2() |
/*etc.*/ );