一次执行一个调度任务,并在新启动时取消当前

时间:2017-06-20 11:17:40

标签: ios grand-central-dispatch

我有一个异步任务,我想执行,每当请求任务时,它都应该废弃所有以前的任务。这意味着我希望一次只能运行一个这样的任务,并在新的任务开始时取消前一个任务。

示例:

用户按下按钮来计算某些内容。控制器在用户更改输入数据时计算并再次按下按钮。第一个计算应该被取消,一个新计算应该从新输入开始。

这种模式合理吗?实现这个的常见模式是什么?是否可以直接将其映射到DispatchQueue / OperationQueue

1 个答案:

答案 0 :(得分:1)

查看NSOperationNSOperationQueue(特别是its cancelAllOperations method)。我想,从我收集的用例中,您可以将任务封装在NSOperation(具体子类)中,并使用NSOperationQueue来管理它,包括取消它。