On Jun 10, 2008, at 03:17, Graham Cox wrote:

In this case I can do that... though out of curiosity I wonder if there is a way to do this "cooperatively" on the main thread without having to break up the loop doing the actual work. For example, in Carbon one can run the event loop for a short period or just for one event on each cycle of the loop - and this code can live in the progress dialog controller, so it works transparently with respect to the loop that drives the progress indicator. I'm not sure that approach is considered "good" in this day and age though I used it a lot on Mac OS 6/7/8/9. Just wondered if such an approach is feasible in Cocoa.

Well, FWIW, to refresh the display and enable Esc and clicks on a cancel button, what I've been using is:

- (BOOL) updateAndCheckIfCancelled {
        NSEvent *event;
        if (!progressCancelled)
while (event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES])
                        if (progressCancellable)
                                [NSApp sendEvent:event];
        return progressCancelled;
}

called regularly through the loop, and it seems to work fine.

_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to