0

我有一个长时间运行的任务,它从文档目录中读取一个文件,解析它,删除文件,然后从 doc 目录中读取下一个文件,解析,删除。我正在尝试将此代码放在后台,但遇到了麻烦。我到目前为止:

(伪代码)

while (fileExistsInDocDirectory) {
                NSOperationQueue *queue = [[NSOperationQueue alloc] init];
                [queue setName:@"LongTask"];
                [queue addOperationWithBlock:^{
                    parseSuccessful = [self doLongTask];                    
                }];
                [queue addOperationWithBlock:^{
                    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                        [self updateProgress];                    
                    }];

                }];    
}

它仅适用于一个文件,因为我使用的是 FMDB,我的 doLongTask 正在将行插入到数据库中。因此,当下一个队列进入并尝试插入其数据并且数据库已在使用中时,它不起作用。在第一个队列在 while 循环内完成之前,我能否运行第二个队列?我看到了一些关于设置依赖队列的事情,但不确定是否有一种简单的方法可以在不继承 NSOperation 的情况下做到这一点。谢谢!

4

0 回答 0