是否有可能做這樣的事情,或者它是危險/不好的做法?如果不好,還有另外一種方法可以解決這個問題嗎?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),我想知道如果沒有引入任何不好的東西(例如死鎖)就可以用這種方式進行編程 –