Two handlers sharing time
    Geoff Canyon 
    gcanyon at inspiredlogic.com
       
    Tue Dec 18 20:14:01 EST 2001
    
    
  
At 3:19 PM -0500 12/18/01, Shari wrote:
>Is it possible to have handlers share time?  So that when it is idle, the second handler runs?
>
>I have a very lengthy handler, that does certain things, calls other handlers, and they in turn call other handlers.  This sets up the data for the user.
>
>As it takes more than a few seconds, I've created things for the user to "do" while waiting.
One way to accomplish something like this is to break the setup task into individual steps (the smaller the better) and then do something like:
global gSetupDone
on setup
  put false into gSetupDone
  doSetupStep 1
end setup
on doSetupStep pWhichStep
  switch pWhichStep
  case 1
    blah blah
    break
  case 2
    blah blah
    break
  ...
  case 32 -- last step
    put true into gSetupDone
  end switch
  if not gSetupDone then 
    send ("doSetupStep" && (pWhichStep + 1)) to me in 1 millisecond
  end if
end doSetupStep
What this will do is process your setup just about as fast as if it were all done at once, but automatically put the process on hold for anything the user does. Note that you can't break a task up any way you like -- each time through the doSetupStep is a different execution, so local variables are lost, loops or branches that go across the separate cases would fail, etc.
You should try to break the setup task into steps that will take no more than .1 seconds each on a medium-speed computer. That way the user will never feel that the system is unresponsive.
regards,
Geoff
    
    
More information about the metacard
mailing list