【发布时间】:2018-04-04 00:24:37
【问题描述】:
我有一个游戏,我正在创建一个暂停按钮。暂停按钮需要停止然后恢复特定任务:
DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: {
if self.ongoing {
self.dispose()
}
})
我正在考虑通过跟踪此任务的安排时间和暂停开始时间来执行此操作,这样我就可以在播放器取消暂停后安排一个具有更新时间的新任务。但是,我不知道如何取消旧任务。有没有更简单的方法可以暂时冻结/停止 DispatchQueue 安排的任务?
【问题讨论】:
-
你没有
suspend任务。你suspend私有队列,它阻止任何东西在该队列上启动(但对已经在该队列上运行的任务不做任何事情)。我很难想象将 GCD 队列用于您的用例。当然,如果您已经在使用队列来管理应用程序的状态(例如调度计时器),那很好,但我个人倾向于为此寻求非 GCD 解决方案。
标签: swift