【发布时间】:2020-03-07 12:02:46
【问题描述】:
我有这个代码 sn-p:
static void Main(string[] args)
{
Observable.Range(1, 5).Subscribe(async x => await DoTheThing(x));
Console.WriteLine("done");
}
static async Task DoTheThing(int x)
{
await Task.Delay(TimeSpan.FromSeconds(x));
Console.WriteLine(x);
}
我希望它会循环 5 次,每次循环后都会打印一行
1
2
3
4
5
但令人惊讶的是,这将打印“完成”并立即终止。似乎 async+await 没有等待 Task.Delay 并退出。
语义似乎没有问题,那么我在订阅或异步方面哪里出错了,如何解决它以满足我从 Rx 调用异步任务的请求?
谢谢。
【问题讨论】:
-
您希望在 5 秒还是 15 秒内打印 1 到 5?
标签: c# asynchronous async-await system.reactive subscribe