是否有可能做这样的事情,或者它是危险/不好的做法?如果不好,还有另外一种方法可以解决这个问题吗?C#嵌套异步方法
void methodA()
{
while (something) {
// do stuff
methodB();
}
}
async Task methodB()
{
bool b = await methodC();
// do something with b
}
async Task<bool> methodC()
{
await Task.Delay(1000);
}
我试图实现是methodA
能够做的东西,而methodC
是在IO等待。因此,与此我希望methodC
将返回methodB
而忙碌,因为methodB
等待答案,它将返回methodA
,其中methodA
可以继续工作的东西,也许叫methodB
再次
“东西”究竟是什么,为什么你不等待'methodB'的调用? –
这不仅是不坏,它有点整个Async。毕竟Task.Delay只是一个正在等待另一种方法的方法(换句话说,Task.Delay什么也不做,你不能做C#程序员)。这并不是说你不能犯错误。异步是另一层复杂性。 – NPSF3000
@JustinNiessner我们有一个线程在等待新消息的循环中旋转,一旦它接收到消息,它将发送进程一些东西并将其发送到服务器(异步调用,因此task.delay),我想知道如果没有引入任何不好的东西(例如死锁)就可以用这种方式进行编程 –