我在CRON PKG中使用 https://github.com/jasonlvhit/gocron/blob/master/gocron.go
import ( "fmt" "time" "github.com/claudiu/gocron" ) func task() { fmt.Println("I am runnning task.", time.Now()) } func vijay() { fmt.Println("I am runnning vijay.", time.Now()) } func main() { go test() gocron.Start() s := gocron.NewScheduler() gocron.Every(5).Seconds().Do(task) gocron.Every(10).Seconds().Do(vijay) <-s.Start() } func test() { time.Sleep(20 * time.Second) gocron.Clear() fmt.Println("All task removed") }
我的问题是删除所有工作后,我的程序仍在执行
我想在删除所有工作后中断执行
请帮帮我,我无法找到方法,我也尝试更改了PKG源代码,但无法找到方法
谢谢你们
首先,您要创建一个新的调度程序,然后等待它,但是使用默认的调度程序来运行您的作业。
接下来,您将阻塞该Start()
方法返回的通道。关闭该通道以取消阻止接收操作。如果您不立即从中退出,这也会退出cron程序中的主循环main
。
func main() { ch := gocron.Start() go test(ch) gocron.Every(5).Seconds().Do(task) gocron.Every(10).Seconds().Do(vijay) <-ch } func test(stop chan bool) { time.Sleep(20 * time.Second) gocron.Clear() fmt.Println("All task removed") close(stop) }
实际上与
func main() { gocron.Start() gocron.Every(5).Seconds().Do(task) gocron.Every(10).Seconds().Do(vijay) time.Sleep(20 * time.Second) gocron.Clear() fmt.Println("All task removed") }
如果您要立即退出,则Clear()
先调用然后停止调度程序并不重要,您只需退出程序即可。