addOperationWithBlock:,如何在while循环中向队列添加操作

时间:2012-07-25 20:05:25

标签: iphone nsoperationqueue

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

0 个答案:

没有答案