ich taste mich langsam an Threads heran, hab dazu ein einfaches Beispiel im Netz gefunden und das erfolgreich abgeändert und erweitert.
Allerdings ist mir manches unklar, vielleicht kann mir das jemand erklären.
Code: Alles auswählen
Enumeration
#FENSTER_HAUPT
#LISTE_EINS
#LISTE_ZWEI
#KNOPF_1
#KNOPF_2
EndEnumeration
Procedure TextEinfuegen(i)
For x.i = 1 To 250
AddGadgetItem(#LISTE_EINS, -1, Str(x))
; Debug "Thread1 " + Str(x)
Delay(100)
Next x
EndProcedure
Procedure TextEEinfuegen(i)
For x.i = 1 To 250
AddGadgetItem(#LISTE_ZWEI, -1, Str(x))
; Debug "Thread2 " + Str(x)
Delay(100)
Next x
EndProcedure
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#FENSTER_HAUPT, 0, 0, 290, 240, "Thread Test", #FLAGS)
ListViewGadget(#LISTE_EINS, 10, 10, 130, 150)
ListViewGadget(#LISTE_ZWEI, 150, 10, 130, 150)
ButtonGadget(#KNOPF_1, 95, 170, 100, 20, "Knopf1 Test")
ButtonGadget(#KNOPF_2, 95, 200, 100, 20, "Knopf2 Test")
Repeat
Ereignis.i = WaitWindowEvent()
Select Ereignis
Case #PB_Event_Gadget
Select EventGadget()
Case #KNOPF_1
Thread1.i = CreateThread(@TextEinfuegen(), 1)
Case #KNOPF_2
Thread2.i = CreateThread(@TextEEinfuegen(), 1)
EndSelect
EndSelect
Until Ereignis = #PB_Event_CloseWindow
EndIf
End
Warum muss ich dem Thread die 1 mitgeben? Ich habs ohne versucht aber dann kommt eine Fehlermeldung.
Ich könnt das zwar als so gegeben hinnehmen, möcht aber immer gern die Hintergründe erfahren...
Dank im Vorab
Kurt