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