如何清除gocron工作?

时间:2017-03-08 09:31:31

标签: go

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作业第二次启动,它每分钟运行两次我的函数。我的错误在哪里?

1 个答案:

答案 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()
}

如果这不能解决您的问题,您也可以查看我的帖子,也许它可以帮助您:)

gocron creates multiple instances of task