Seite 1 von 1

Sichtbereich Workaera?

Verfasst: Do, 24. Okt 2013 22:13
von satmax
Ich rufe aus dem Hauptmenü meine Auftragsbearbeitung als eigenen Thread auf. Dieser Thread erweitert auch Menüstruktur des Hauptmenüs. Rufe ich via einem so erstellten Menüpunkt eine Funktion auf, habe ich innerhalb dieser Funktionen keinen Zugriff auf die Daten (Workarea) des Threads, irgendwie ja logisch. Nur wie komme ich die Daten des jeweils aktiven Threads?

Geht das überhaupt?

Re: Sichtbereich Workaera?

Verfasst: Fr, 25. Okt 2013 1:13
von AUGE_OHR
satmax hat geschrieben:Geht das überhaupt?
JA.

1.) du könntest mit dem ZeroSpace arbeiten
2.) du benutzt die Windows Queue

zu 1.) kann ich nicht viel sagen weil ich es nicht benutze.
zu 2.) mache es auf die Windows Art zum übergeben von Parameter.

Xbase++ kennt PostAppEvent und UserDef Events

Code: Alles auswählen

// Userdef Events
#define MyEnter       xbeP_User + 4711
#define MyAbort       xbeP_User + 4712

Proc Main
LOCAL oDialog
LOCAL oThread := Thread():new()
...
   oThread:start(  {|| DoMyThread(oDialog) } )
...
   nEvent := xbe_None
   DO WHILE !lExit
      DO CASE
         //
         // your Userdef Events
         //
         CASE nEvent == MyEnter
             DoNextStep(mp1)
         CASE nEvent == MyAbort

         OTHERWISE
            oXbp:HandleEvent ( nEvent, mp1, mp2 )
      ENDCASE
   ENDDO
...
RETURN

Proc DoMyThread(oMain)
LOCAL aReturn := {}
   // do your stuff here
   // and aadd Result to Array
   aadd(aReturn, Customer->Firstname)
   aadd(aReturn, Customer->Lastname)
   ...
   // post Array into Queue
   PostAppEvent(MyEnter, aReturn, , oMain)
RETURN