[self cancelAllOperations]; [self waitUntilAllOperationsAreFinished]; Cancelling the operations is asynchronous since an in-progress op may take a little while to finish up.
Mike. On 31 Mar 2010, at 22:32, Jerry Krinock wrote: > I execute the following code in a subclass of NSOperationQueue: > > if (error) { > NSLog(@"Cancelling all operations due to error") ; > [self cancelAllOperations] ; > } > NSLog(@"#1 Remaining operations in %p:\n%@", self, [self operations]) ; > NSLog(@"#2 Remaining operations in %p:\n%@", self, [self operations]) ; > > The console result: > > 2010-03-31 14:06:11.581 TestApp[10342:7d0f] Cancelling all operations due to > error > 2010-03-31 14:06:11.583 TestApp[10342:7d0f] #1 Remaining operations in > 0x1a38e6a0: > ( > <NSInvocationOperation: 0x1a38d740>, > SSYOperation 0x1a38d7e0 selector=saveDocument, > <NSInvocationOperation: 0x1a386510>, > SSYOperation 0x1a3a5510 selector=terminateWork, > <NSInvocationOperation: 0x1a385f20> > ) > 2010-03-31 14:06:11.584 TestApp[10342:7d0f] #2 Remaining operations in > 0x1a38e6a0: > ( > <NSInvocationOperation: 0x1a38d740> > ) > > So you see in NSLog #1 there are 5 operations in the queue. This is > expected, because although the documentation for -cancelAllOperations is a > little vague, it does not say that it *removes* any operations from the queue. > > But what happens in NSLog #2? All operations are gone except the first one. > All of a sudden! > > Big thanks to anyone who can offer any clues on this. > > Jerry Krinock > > P.S. The above code is executing on a secondary thread. Is that a possible > issue? NSOperationQueue is not listed as a thread-safe class in the > Threading Programming Guide. But in the class documentation it says "It is > safe to use a single NSOperationQueue object from multiple threads without > creating additional locks to synchronize access to that object." I tried > running the above code with performSelectorOnMainThread wrappers, but got a > deadlock I can't explain either. (Sample shows mach_msg_trap.) > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/cocoa-dev/cocoadev%40mikeabdullah.net > > This email sent to cocoa...@mikeabdullah.net _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com