` Printed Icetips Article

Icetips Article



Par2: How to start threads automatically at startup?
2006-02-13 -- Lee White
 
>I want to start several procedures automatically when my app/frame is 
>loaded.
>My C55 code was quite simple:
>GloThread_A = START(Proc_A,25000)
>GloThread_B = START(Proc_B,25000)
>GloThread_C = START(Proc_C,25000)
>Doing this in C6.3 (9050) freezes my program.

I would suggest using Notify() & Notification() to work through your
stack of procedures. This is the method I've use in AFE since the
introduction of real threads and running into the same problem you
did. AFE starts 12 threads when it first loads!

MainThread          LONG
NotifyCode          UNSIGNED
NotifyThread        SIGNED
NotifyParam         LONG

  OPEN(AppFrame)
  ACCEPT
    CASE EVENT()
    OF EVENT:OpenWindow
      MainThread = THREAD()
      NOTIFY( 1, MainThread, 1 )

    OF EVENT:Notify

      IF NOTIFICATION(NotifyCode,NotifyThread,NotifyParam)
        IF NotifyCode = 1
          EXECUTE NotifyParam
            tDrawCover      = START(Draw_CoverSheet,50000)
            tDrawPages      = START(Draw_FaxPages,50000)
            tAppendTIF      = START(AppendTIF,50000)
            tRefreshSystem  = START(RefreshSystem,30000)
            tBuildQueue     = START(BuildQueue,20000)
            tScheduleFax    = START(ScheduleFax,20000)
            tCompletedFax   = START(CompletedFax,20000)
            tFailedFax      = START(FailedFax,20000)
            tFailedSchedule = START(FailedSchedule,20000)
            tPrintReport    = START(PrintReport,20000)
            tHandleXref     = START(HandleXref,20000)
            tFaxCore        = START(FaxCore,40000)
          END
        END
      END


! example of procedure...
Draw_CoverSheet PROCEDURE

  CODE
  ACCEPT
    CASE EVENT()
    OF EVENT:OpenWindow
      NOTIFY( 1, MainThread, 2 )


! example of procedure...
FaxCore PROCEDURE

  CODE
  ACCEPT
    CASE EVENT()
    OF EVENT:OpenWindow
      NOTIFY( 1, MainThread, 13 )



Printed November 21, 2024, 7:08 am
This article has been viewed/printed 35226 times.