Hallo,
mein Programm ist jetzt schon so groß geworden, sodadass ich kaum noch durchblicke ^^
Aufjedenfall arbeite ich gerade an Threads. Ich hab eine Structure die ich im Thread abfragen und bearbeiten will! Aber wie :,(
Ich wüsste gerade auch nicht wonach ich suchen sollte... sry.
gruß Jonas
Structure in Thread abfragen
Ich glaub ich habs! Wenn ich hilfe brauch, melde ich mich einfach hier nochmal! THX!
Code: Alles auswählen
Structure workdata
command.l
value1.l
value2.l
value3.l
EndStructure
Procedure workthread(*work.workdata)
Repeat
Debug *work\command
Debug *work\value1
Debug *work\value2
Debug *work\value3
Delay(2000)
Until *work\command
*work\command = 2
EndProcedure
Global daten.workdata
daten\value1 = 1
daten\value2 = 2
daten\value3 = 3
Debug "Start Thread"
id = CreateThread(@workthread(),@daten)
Delay(5000)
daten\value1 = 10
daten\value2 = 20
daten\value3 = 30
Delay(5000)
Debug "Thread beenden"
daten\command = 1
While daten\command <> 2: Delay(100): Wend
Debug "Thread beendet."
gruß oNNy
http://www.onnsoft.de
http://www.onnsoft.de
hm, wie wandel ich es so um, dass ich auch strings übertragen kann?
//edit: soweit bin ich gekommen:
//edit: soweit bin ich gekommen:
Code: Alles auswählen
Structure workdata
command.s
value1.s
value2.s
value3.s
EndStructure
Procedure workthread(HILFE!!!)
Repeat
Debug work(0)\command
Debug work(0)\value1
Debug work(0)\value2
Debug work(0)\value3
Delay(2000)
Until work(0)\command
work(0)\command = "2"
EndProcedure
Global Dim daten.workdata(100)
daten(0)\value1 = "1"
daten(0)\value2 = "2"
daten(0)\value3 = "3"
Debug "Start Thread"
id = CreateThread(@workthread(),@daten)
Delay(5000)
daten(0)\value1 = "10"
daten(0)\value2 = "20"
daten(0)\value3 = "30"
Delay(5000)
Debug "Thread beenden"
daten(0)\command = "1"
While daten(0)\command <> "2": Delay(100): Wend
Debug "Thread beendet."
gruß oNNy
http://www.onnsoft.de
http://www.onnsoft.de
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
So gehts:
Oder gleich so:
Allerdings musst du das 'Global Dim' auch vor den Thread schreiben.
Code: Alles auswählen
Structure workdata
command.s
Value1.s
value2.s
value3.s
EndStructure
Procedure workthread(*work.workdata)
Repeat
Debug *work\command
Debug *work\Value1
Debug *work\value2
Debug *work\value3
Delay(2000)
Until *work\command
*work\command = "2"
EndProcedure
Global Dim daten.workdata(100)
daten(0)\Value1 = "1"
daten(0)\value2 = "2"
daten(0)\value3 = "3"
Debug "Start Thread"
id = CreateThread(@workthread(),@daten(0))
Delay(5000)
daten(0)\Value1 = "10"
daten(0)\value2 = "20"
daten(0)\value3 = "30"
Delay(5000)
Debug "Thread beenden"
daten(0)\command = "1"
While daten(0)\command <> "2": Delay(100): Wend
Debug "Thread beendet."
Code: Alles auswählen
Structure workdata
command.s
Value1.s
value2.s
value3.s
EndStructure
Global Dim daten.workdata(100)
Procedure workthread(dummy.l)
Repeat
Debug daten(0)\command
Debug daten(0)\Value1
Debug daten(0)\value2
Debug daten(0)\value3
Delay(2000)
Until daten(0)\command
daten(0)\command = "2"
EndProcedure
daten(0)\Value1 = "1"
daten(0)\value2 = "2"
daten(0)\value3 = "3"
Debug "Start Thread"
id = CreateThread(@workthread(),0)
Delay(5000)
daten(0)\Value1 = "10"
daten(0)\value2 = "20"
daten(0)\value3 = "30"
Delay(5000)
Debug "Thread beenden"
daten(0)\command = "1"
While daten(0)\command <> "2": Delay(100): Wend
Debug "Thread beendet."