暂停已经执行的任务NSOperationQueue

时间:2013-03-26 10:52:53

标签: ios objective-c nsoperationqueue

我暂停正在执行的当前任务时遇到问题,我尝试将NSOperationQueue setSuspended=YES设置为暂停,并setSuspended=NO设置为恢复该过程。

根据apple docs,我无法暂停已经执行的任务。

  

如果要暂停执行操作,可以使用setSuspended:方法挂起相应的操作队列。挂起队列不会导致已执行的操作在其任务中间暂停。它只是阻止计划执行新操作。您可以暂停队列以响应用户请求暂停任何正在进行的工作,因为期望用户最终可能希望恢复该工作。

我的应用程序需要在互联网不可用的情况下暂停上传操作的时间,并在互联网可用后最终恢复相同的操作。这有什么工作吗?或者我只需要从零开始当前正在执行的任务?

2 个答案:

答案 0 :(得分:1)

我认为你需要从零开始。否则会有两个问题。如果您恢复当前上传,则无法确保不会丢失任何数据包。同时,如果连接在很长一段时间后可用,服务器可能会因为操作不完整而删除您之前上传的数据。

答案 1 :(得分:1)

您是否可以恢复或暂停操作队列不是您的问题... 如果它像您想象的那样工作(并且它没有)当您回到服务TCP连接时,它可能处于不良状态,它可能已经超时,远程关闭...... 您将需要了解您的服务器支持的内容,并使用REST(或类似)服务的各个部分来恢复在全新连接上停止上传。

如果还没有,请打印this并将其放在立方体的墙壁上,为家人制作T恤......也许可以将其添加为屏幕保护程序?