Kotlin channel.receive()在withTimeout()块中使用时不超时
当频道在特定时间后没有收到消息时,我希望Kotlin channel.receive()在withTimeout()块中使用时不超时,kotlin,kotlin-coroutines,Kotlin,Kotlin Coroutines,当频道在特定时间后没有收到消息时,我希望channel.receive()超时以执行其他操作 我尝试过使用withTimeout()块,但实际上它没有超时 val incomingNotification = withTimeout(1000L) { (session.outgoing as Channel<Frame>).receive() } val incomingNotification=withTimeout(1000L){ (session.outgoing a
channel.receive()
超时以执行其他操作
我尝试过使用withTimeout()块,但实际上它没有超时
val incomingNotification = withTimeout(1000L) {
(session.outgoing as Channel<Frame>).receive()
}
val incomingNotification=withTimeout(1000L){
(session.outgoing as Channel).receive()
}
是否receive()
实际上是不可取消的?
我做错了什么?协同程序运行在哪个调度程序上?调度程序可能正忙于另一个任务,以便在超时时恢复执行它正在JUnit测试所用的runBlocking块中运行自己的协同程序。是的@EugenePetrenko你是对的。调度程序一直很忙,因为我在其他地方的同一线程上使用了另一个runBlocking。现在已经修好了。谢谢。你到底是怎么修好的?我也有同样的问题。协同程序运行在哪个调度程序上?调度程序可能正忙于另一个任务,以便在超时时恢复执行。它正在JUnit测试所用的runBlocking块中运行自己的协同程序。是的@EugenePetrenko你是对的。调度程序一直很忙,因为我在其他地方的同一线程上使用了另一个runBlocking。现在已经修好了。谢谢。你到底是怎么修好的?我也有同样的问题。