CreateThread()
Syntax
Thread = CreateThread(@ProcedureName(), *Wert)Beschreibung
Erstellt einen neuen Thread, welcher im Hintergrund der Applikation läuft. Wenn der Thread korrekt erstellt wurde, wird die 'Thread' Nummer zurückgegeben, welche zusammen mit den anderen Befehlen, wie KillThread(), PauseThread(), etc..., benutzt wird. Die Prozedur, welche Sie als ein Thread verwenden, muss einen Parameter haben und kann nichts zurückgeben. Das '*Wert' Argument von CreateThread() wird als Parameter an die Prozedur übergeben. Wenn Sie versuchen, von Ihrem Thread aus einen Wert zurückzugeben, wird dieser einfach verloren gehen.
Parameter
@ProcedureName() Die Adresse der Prozedur, welche Sie als Code für den neuen Thread benutzen möchten. Denken Sie daran, dem Prozedurennamen das @ voranzustellen und an die Klammern dahinter, damit die Adresse der Prozedur übergeben wird. *Wert Der als Parameter an die Thread-Prozedur übergebene Wert. Es liegt an Ihnen, wofür dieser Wert verwendet wird.
Rückgabewert
Die Nummer des neu erstellten Threads - oder Null, wenn der neue Thread nicht erstellt werden konnte. Diese Nummer wird benötigt, wenn Sie den Thread mit den anderen Befehlen dieser Library kontrollieren möchten.
Beispiel
Das nachfolgende Beispiel zeigt den grundlegenden Weg zur Erstellung eines Threads, wenn er auch in diesem Fall nichts weiter tut.
Procedure DeineProzedur(*Wert) ; Die Variable '*Wert' wird 23 enthalten EndProcedure CreateThread(@DeineProzedur(), 23)
Beispiel: Übergeben mehrerer Parameter an einen Thread
Structure Person Name$ Age.b Phone.l EndStructure Procedure Thread(*Parameters.Person) ; Zeigt die Parameter an ; Debug *Parameters\Name$ Debug *Parameters\Age Debug *Parameters\Phone ; Sobald wir sie nicht mehr benötigen, verwenden wir ClearStructure(), um sicher zu gehen, ; dass alle dynamischen Objekte (wenn vorhanden) korrekt gelöscht werden, und geben ; den dynamischen Speicherbereich frei ClearStructure(*Parameters, Person) FreeMemory(*Parameters) EndProcedure ; Wir verwenden einen dynamisch zugewiesenen Speicherbereich, was auch beim Aufrufen von einer Prozedur aus noch funktioniert. ; Der Speicherbereich wird durch den Thread freigegeben. ; *Parameters.Person = AllocateMemory(SizeOf(Person)) *Parameters\Name$ = "John" *Parameters\Age = 30 *Parameters\Phone = 10203040 CreateThread(@Thread(), *Parameters) ; Einen Zeiger auf unsere Struktur an den Thread senden Delay(2000)
Unterstützte OS
Alle