func main() {
statusChannel := make(chan bool)
go checkChannel(statusChannel)
[...]
if x == 1 {
statusChannel <- true
} else {
statusChannel <- false
}
func checkChannel(statusChannel chan bool) {
defer close(statusChannel)
for {
log.Printf("waiting for signal...\n")
shouldContinue := <-statusChannel
if !shouldContinue {
log.Print("received false, breaking...\n")
gocron.Clear()
break
}
gocron.Every(1).Minute().Do(myFunc)
<-gocron.Start()
log.Print("working...\n")
}
}
正在运行的gocron作业会中断,但如果我的gocron作业第二次启动,它每分钟运行两次我的函数。我的错误在哪里?
答案 0 :(得分:0)
我刚刚与gocron有一个类似的问题,我通过删除
解决了我的问题<-gocron.Start()
来自我的for-loop,因为它将启动已经重新启动的gocron作业。
您可以尝试将for循环更改为:
for {
log.Printf("waiting for signal...\n")
shouldContinue := <-statusChannel
if !shouldContinue {
log.Print("received false, breaking...\n")
gocron.Clear()
break
}
gocron.Every(1).Minute().Do(myFunc)
log.Print("working...\n")
}
<-gocron.Start()
}
如果这不能解决您的问题,您也可以查看我的帖子,也许它可以帮助您:)