如何从另一个类(在Kotlin中)退出runBlocking协程?
我试图让我的代码在发生某些事情时退出程序,例如用户退出命令。 这就是我运行程序的方式:如何从另一个类(在Kotlin中)退出runBlocking协程?,kotlin,exit,kotlin-coroutines,Kotlin,Exit,Kotlin Coroutines,我试图让我的代码在发生某些事情时退出程序,例如用户退出命令。 这就是我运行程序的方式: fun main()=运行阻塞{ Bot().start() } 不幸的是,在start()之外调用时,运行exitProcess(0)或Thread.currentThread().interrupt()似乎没有任何作用,这在我的用例中是非常不寻常的 有什么办法可以解决这个问题吗?runBlocking{ val job=launch{start()} //在此处通过其他API处理输入。完成后: 作业。取
fun main()=运行阻塞{
Bot().start()
}
不幸的是,在start()
之外调用时,运行exitProcess(0)
或Thread.currentThread().interrupt()
似乎没有任何作用,这在我的用例中是非常不寻常的
有什么办法可以解决这个问题吗?runBlocking{
val job=launch{start()}
//在此处通过其他API处理输入。完成后:
作业。取消()
}
(您可能希望查看以将
Cmd
对象交付到命令循环中,并在输入完成时关闭通道。)什么是start()
外观?不幸的是,这似乎不起作用。我知道cancel()将导致start()中的下一个暂停点抛出CancellationException。如果start()已完成或卡在阻塞IO中,则cancel()将不会执行任何操作。start()
没有任何挂起点,它将完成,因为它是一个启动序列。使用delay(largeNumber)
或某个无限while循环可以解决这个问题吗?我需要在从另一个进程取消作业后调用exitProcess(0)
,谢谢