我有这段代码:
_myQueue = dispatch_queue_create("com.myapp", DISPATCH_QUEUE_SERIAL);
_mainQueue = dispatch_get_main_queue();
以及需要几秒钟(或几分钟)的大量此块
dispatch_async(_myQueue,
^{
if(canRun){
dispatch_async(_mainQueue,^{/* updating interface here */});
// code here
}
});
我的应用有一个"停止"按钮尝试停止所有工作,BOOL" canRun"帮助我执行所有块,无需执行任何操作.....但总是必须等待每个块的完成,直到队列变为0。 有没有办法立即"清洁"队列不是这样做的吗? 目的是在不关闭和重新打开应用程序的情况下停止进程并重新开始。 该项目在ARC下运作。
答案 0 :(得分:2)
如果您采取一些额外步骤来创建dispatch_source对象并保留对它的引用,则可以取消它们。
对初学者进行审核
有暂停,恢复和取消的功能。