我有一个长时间运行的任务,它从文档目录中读取一个文件,解析它,删除文件,然后从 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 的情况下做到这一点。谢谢!