MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    写定时任务出现的一些问题()

    开发交流
    4
    4
    368
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 藤原白叶
      藤原白叶 最后由 编辑

      今天试图用Timer写定时任务,然后出现了一个严重的问题:部分函数只能协程或者suspend函数调用(比如说sendMessage)。
      但是Timer中函数貌似不能suspend()
      想问一下各位大佬,这种问题怎么解决()
      我目前的解决方法太过暴力(),就是每秒读取一下系统时间做匹配,但是还是试图找到一种高效的方法

      cssxsh 1 条回复 最后回复 回复 引用 0
      • H
        hatmony 摸鱼 最后由 编辑

        我是用springboot+mirai-core实现bot的,用最简单的@Scheduled的默认配置 进行同步定时任务发消息(即最后调用sendMessage)是没问题的。

        1 条回复 最后回复 回复 引用 0
        • cssxsh
          cssxsh @藤原白叶 最后由 编辑

          @藤原白叶
          你给 suspend 函数 套一层 launch 不就行了吗

          1 条回复 最后回复 回复 引用 0
          • Karlatemp
            Karlatemp 最后由 编辑

            public object MyPlugin : KotlinPlugin() {
            private val scheduler = Executors.newScheduledThreadPool(2)
            
                private suspend fun supFunc() {
                    logger.info { "!" }
                }
            
                private fun timers() {
                    // Way 1
                    scheduler.submit { runBlocking { supFunc() } }
                    // Way 2
                    scheduler.submit { MyPlugin.launch { supFunc() } }
                }
            
                private suspend fun magicTimer() {
                    suspendCoroutine<Unit> { coroutine ->
                        scheduler.submit {
                            coroutine.resume(Unit)
                        }
                    }
                    logger.info { "!" }
                }
            
            }
            
            1 条回复 最后回复 回复 引用 1
            • 1 / 1
            • First post
              Last post
            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact