|
|
@@ -38,6 +38,7 @@
|
|
|
|
|
|
self.operation_queue = [NSOperationQueue new];
|
|
|
self.operation_queue.maxConcurrentOperationCount = self.maxThread;
|
|
|
+ self.arr_queue_lock = [NSLock new];
|
|
|
|
|
|
[self loadTasks];
|
|
|
// self.backgroundColor = [UIColor clearColor];
|
|
|
@@ -72,7 +73,12 @@
|
|
|
|
|
|
// [self.arr_queue addObject:task];
|
|
|
|
|
|
+ [self.arr_queue_lock lock];
|
|
|
[[self mutableArrayValueForKey:@"arr_queue"] addObject:task];
|
|
|
+ [self.arr_queue_lock unlock];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
if(self.newtaskStatus==TaskStatusWait)
|
|
|
{
|
|
|
|
|
|
@@ -84,7 +90,12 @@
|
|
|
}
|
|
|
-(void) addTasks:(NSMutableArray*) tasks
|
|
|
{
|
|
|
- [[self mutableArrayValueForKey:@"arr_queue"] addObjectsFromArray:tasks];
|
|
|
+ [self.arr_queue_lock lock];
|
|
|
+ [[self mutableArrayValueForKey:@"arr_queue"] addObjectsFromArray:tasks];
|
|
|
+ [self.arr_queue_lock unlock];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
if(self.newtaskStatus==TaskStatusWait)
|
|
|
{
|
|
|
for(NSMutableDictionary* task in tasks)
|
|
|
@@ -106,7 +117,13 @@
|
|
|
NSError* error = nil;
|
|
|
[fmanager removeItemAtPath:[self filePath:task] error:&error];
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ [self.arr_queue_lock lock];
|
|
|
[[self mutableArrayValueForKey:@"arr_queue"] removeObjectsInArray:tasks];
|
|
|
+ [self.arr_queue_lock unlock];
|
|
|
+
|
|
|
// if (self.delegate && [self.delegate respondsToSelector:@selector(uploadManager:didRemoveTasks:)]) {
|
|
|
// [self.delegate uploadManager:self didRemoveTasks:tasks];
|
|
|
// }
|
|
|
@@ -120,16 +137,11 @@
|
|
|
NSError* error = nil;
|
|
|
[fmanager removeItemAtPath:[self filePath:task] error:&error];
|
|
|
|
|
|
- @try {
|
|
|
- [[self mutableArrayValueForKey:@"arr_queue"] removeObject:task];
|
|
|
- } @catch (NSException *exception) {
|
|
|
- NSLog(@"%@\n%@",exception.name,exception.reason);
|
|
|
- } @finally {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
|
|
|
+ [self.arr_queue_lock lock];
|
|
|
+ [[self mutableArrayValueForKey:@"arr_queue"] removeObject:task];
|
|
|
+ [self.arr_queue_lock unlock];
|
|
|
+
|
|
|
// if (self.delegate && [self.delegate respondsToSelector:@selector(uploadManager:didRemoveTasks:)]) {
|
|
|
// [self.delegate uploadManager:self didRemoveTasks:@[task]];
|
|
|
// }
|