Runloop not being stopped by CFRunLoopStop?
Runloop not being stopped by CFRunLoopStop?
- Subject: Runloop not being stopped by CFRunLoopStop?
- From: Matt Gough <email@hidden>
- Date: Mon, 04 Jul 2011 17:36:37 +0100
I have a runloop running in an NSThread. In this thread is a timer which fires every 2 seconds. In the timer, I check [NSThread isCancelled] and if so, stop the runloop via CFRunLoopStop.
The runloop is run via runUntilDate:distantFuture.
Shouldn't runUntilDate terminate once CFRunLoopStop has been called on it?
Here is the pertinent code:
- (void)gatheringTimer:(NSTimer*)timer
{
if ([[NSThread currentThread] isCancelled])
{
[timer invalidate];
CFRunLoopStop(CFRunLoopGetCurrent());
return;
}
// Real code goes here to do handle the timer
}
- (void)doGathering:(id)object
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(gatheringTimer:)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantFuture]];
[pool drain];
}
- (void)startGathering
{
if (!_gatheringThread)
{
_gatheringThread = [[NSThread alloc] initWithTarget:self selector:@selector(doGathering:) object:nil];
[_gatheringThread start];
}
}
- (void)stopGathering
{
if (_gatheringThread)
{
[_gatheringThread cancel];
[_gatheringThread release];
_gatheringThread = nil;
}
}
I have verified that CFRunLoopStop is being called, but doGathering never finishes
Any ideas?
Thanks
Matt
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden