我有一个程序可以读取位于不同物理位置的2个读取器的一些值。对于一个读者,我知道我可以像写:C#异步方法基于第一个完成的任务执行
private async void waitForReading()
{
string result = await readFromReader1();
return result;
}
private async Task<string> readFromReader1()
{
//poll until value detected
return reader1Value;
}
private async Task<string> readFromReader2()
{
//poll until value detected
return reader2Value;
}
但是,如果我从两个读卡器读取时返回的任务之一继续执行?
我想实现看起来像什么:
private async void waitForReading()
{
string result = await readFromReader1() || readFromReader2();
return result;
}
这可能吗?
我猜 'Task completedTask = Task.WhenAny(new Task [] {task1,task2}); Console.WriteLine(completedTask.Result);' 可能更简单吗? –
是的,非常感谢您指出 – huangcd