Da immer wieder leute fragen, ob es möglich ist mehrere funktionen nebeneinander her laufen zu lassen, und ich zu faul bin ein tutorial zu schreiben, hier mal ein kleiner beispiel code der allgemein immer funktionieren sollte:
Func _Sleep($time, $action) If $first_loop Then Assign($action&"_number", Eval($action&"_number")+1, 2) ElseIf Eval($action&"_active") Then If Eval($action&"_current") = Eval($action&"_count") Then If Not IsDeclared($action&"_timer") Or Eval($action&"_timer")='x' Then Assign($action&"_timer", TimerInit(), 2) ElseIf TimerDiff(Eval($action&"_timer")) >= $time Then Assign($action&"_current", Mod(Eval($action&"_current")+1, Eval($action&"_number")), 2) Assign($action&"_timer", 'x', 2) EndIf EndIf EndIf Assign($action&"_count", Mod(Eval($action&"_count")+1, Eval($action&"_number")), 2) EndFunc
Func _Func($func, $action) If $first_loop Then Assign($action&"_number", Eval($action&"_number")+1, 2) ElseIf Eval($action&"_active") = True Then If Eval($action&"_current") = Eval($action&"_count") Then Execute($func) Assign($action&"_current", Mod(Eval($action&"_current")+1, Eval($action&"_number")), 2) EndIf EndIf Assign($action&"_count", Mod(Eval($action&"_count")+1, Eval($action&"_number")), 2) EndFunc
Func Activation($action, $control=-1, $start="Start", $stop="Stop") If Not IsDeclared($action&"_active") Or Eval($action&"_active") = False Then Assign($action&"_active", True, 2) If $control<>-1 Then GUICtrlSetData($control, $stop) Else Assign($action&"_active", False, 2) If $control<>-1 Then GUICtrlSetData($control, $start) EndIf Assign($action&"_count", 0, 2) Assign($action&"_current", 0, 2) EndFunc
da auch sleeps nutzbar sein sollen, ohne dabei das script zu blockieren, habe ich mir mal ein system ausgedacht, dass die zum jeweiligen "thread" gehörigen aktionen durchnummeriert, und so sleeps per timer einzeln steuern kann
hierbei handelt es sich natürlich nicht um echtes multithreading. alles läuft in einem thread, wird jedoch ohne jegliche script blockierungen "gleichzeitig" ausgeführt.
die activation funktion ist zuständig für das starten und stopen der "threads". habe mal gleich noch mit eingebaut, dass sie auch in der lage ist controls zu bearbeiten (zb button texte ändern auf start/stop).
bei den funktionen und sleeps steht $action für die jeweilige thread bezeichnung.
hier mal ein beispiel, wodurch das ganze hoffentlich klar wird:
; function n _Sleep(4000, 'n') _Func('ConsoleWrite("Funktion n"&@CRLF)', 'n') ; WICHTIG! ; --- hier ende vom ersten schleifendurchlauf bestätigen --- $first_loop = False WEnd
wir man hierran erkennt, laufen die einzelnen "threads" in sich nacheinander ab, aber global nebeneinander her.
Erklärt sich eigentlich von selbst, von daher muss ein Tut auch nich sein.
Man könnte vielleicht noch eine Funktion einfügen, um die einzelnen Sektionen zu überbrücken/aufzuteilen, ist aber eher Schnickschnack.
Replay bedeutet, dass im Lied1 zu einem festgelegten Zeitpunkt entweder Lied1 oder Lied2 eingespielt wird. Zeitpunkt wird durch das Lied selbst festgelegt.
Replay bedeutet, dass im Lied1 zu einem festgelegten Zeitpunkt entweder Lied1 oder Lied2 eingespielt wird. Zeitpunkt wird durch das Lied selbst festgelegt.
Aber geht sehr ins OT.
Anderes Beispiel: Downloader ;D
das mit dem song einspielen kriegt man auch hin.
man kann ja 2 songs parallel laufen lassen. (müsste man nur mehr playid's erstellen)
Downloader.. was genau meinst du jetzt damit?^^
einfach irgendeine datei herunterladen oder wie?
soll ich dir hier jetzt für jedes beispiel was coden ? xD
Kann mir bitte jemmand eine Hmachi HP erstellen """""SOS HELP"""" 09/15/2010 - Metin2 Private Server - 11 Replies SO wie der Titel schon sagt ich suche einen der mir per Teamviwer eine hp machen kann habe schon alles ausprobiert aber es klappt nie!!!!
PLS HELP...