我怎么能暂停在NSOperationQueue一个的NSOperation?(How can I P

2019-07-31 01:23发布

我需要暂停运行的NSOperation这是插在一个NSOperationQueue。 目前,我取消所有操作,并重新启动它们。 但是,这会导致某种形式的重复中完成的过程而言。 我试着用NSOperationQueue的setSuspended标志。 但它不是暂停操作。 有什么办法呢?

Answer 1:

看到这一点: 链接

在这里,来自苹果文档 :

方法:暂停,如果你想发出暂时停止操作的执行恢复队列,可以使用setSuspended暂停相应的操作队列。

暂停队列不会导致已经执行的操作在他们的任务中间暂停。 它只是防止被调度执行的新操作。 你可能会在响应用户请求暂停任何正在进行的工作暂停队列,因为预期的是,用户可能最终要恢复这项工作。



Answer 2:

我还没有尝试,但我可能会从这里开始:

  • 添加isPaused标志,您NSOperation子类
  • 实现对操作的数据复制/移动方法
  • 如果暂停, setCancelled:手表在这种变化-main
  • 创建一个新的操作从暂停操作,以新的操作移动状态
  • 调整优先级队列重新排序操作顺序,如果你喜欢
  • 克隆添加到队列
  • 从返回-main如果-main

注意,这将只是挂起。 如果你真的想暂停和恢复明确,你会手动“新operation`当你想恢复。

现在,如果你正在观察或有特殊完井,那么你将有一些其他的问题。 对于简单的情况下,似乎这种做法似乎很好地工作。



文章来源: How can I Pause a NSOperation in a NSOperationQueue?