Aber in meinem Code scheint was nicht zu stimmen. Also jetzt nichts mehr mit dem Sleep.
Code:
ElseIf content.StartsWith("S|CFG|1") Then
If canSwitch = True Then
Me.Send("0|S|CFG|1")
canSwitch = False
Dim newThread As New System.Threading.Thread(Sub() AsyncSleep(5000))
newThread.Start()
canSwitch = True
Else
Me.Send("0|A|STD|You have to wait 5 seconds after the last change")
End If
ElseIf content.StartsWith("S|CFG|2") Then
If canSwitch = True Then
Me.Send("0|S|CFG|2")
canSwitch = False
Dim newThread As New System.Threading.Thread(Sub() AsyncSleep(5000))
canSwitch = True
newThread.Start()
Else
Me.Send("0|A|STD|You have to wait 5 seconds after the last change")
End If
End If
Kleine Erklärung:
Es gibt 2 Konfigurationen auf einem PServer. Wenn er die erste wählen will, soll er überprüfen, ob er das auch darf. Hab oben einen Boolean auf True gesetzt.
Falls er darf, soll er ihn auf false setzen und dann switchen.
Falls nicht, soll er eine Meldung ingame ausspucken.
Ich kann aber ohne Probleme zwischen den Konfigurationen switchen.
Mh, ohne Garantie aber so vom drüberschauen, du erstellst einen neuen Thread
Dim newThread As New System.Threading.Thread(Sub() AsyncSleep(5000))
Dieser wartet vermutlich auch seine 5 Sekunden, aber das ist ja garnicht was du willst, der Witz an Threads ist ja gerade das der aufrufende Thread weiterläuft sobald er den neuen Thread gestartet hat
Mh also etwa so
Thread 1: if abfrage --> bool setzen -> thread starten -> bool setzen ->ende
Thread 2: 5 Sekunden warten ------------------> ende
Thread 2 läuft praktisch Zeitgleich mit dem ersten.
Hoffe du verstehst was ich meine
Dein neuer Thread muss den Bool setzen und ggf das packet senden. Sollte eig klappen. Und die Konsole bekommt das mit das der Thread gemacht wird, aber sie wartet nicht bis der Thread zu Ende ist. Nur der Thread wartet 5 sek, aber die Konsole setzt nach ~0.1 Sek den Wert wd auf True.
Da ich nicht gerne ganze codeteile poste nur mal ne andere kleine sache:
1. Task.Delay(time)
2. ContinueWith....
sehr praktisch und nutzt automatisch die ThreadPool klasse aus und bei anderne wuenschbaren settings kann man diese noch setzten (mal bissle mit der netten Task Klasse und async in .net 4.5 beschaeftigen).
Wie woanders genutzt werden ? Kannst doch viel threads machen für verschiedene Sachen :P ist nur resourcenlastig aber mir ist auch keine andere Lösung bei dem pserver eingefallen. Ich kann nacher mal paar Leute fragen die sowas eig können sollten Muss dafür aba erstmal aus der Schule raus xD
Er will, dass wenn jemand im Client etwas nutzt und sein Server das packet dafür bekommt, dass dann ein wert geprüft wird ob er denn in dem Falle die Configuration ändern kann oder nicht. Falls er sie ändern kann, soll sie geändert werden, ein bool, der angibt ob sie geändert werden kann, auf false gesetzt werden und nach 5 Sek soll dieser bool wieder zu true werden. Er kann nicht einfach Sleep in der else if content... abfrage machen, da dann alle ankommenden packet nicht verarbeitet werden. Falls es halt nicht für Configuration ist, z.b. für irgendeinen skill soll ein anderer bool geprüft werden. Bei dem Server müssen relativ viele cooldowns für nur einen Spiele gecheckt werden. (Ich GLAUBE deswegen möchte er nicht immer einen neuen thread erstellen wenn ein spieler einen skill nutzt. Da kann man aber glaube ich nicht viel anders machen.) Seine letzte Frage war jetzt ob es denn irgendwie Resourcen sparender gehen könnte anstatt 500 (oder mehr) threads am laufen zu haben. Hoffe du hast sein Problem jetzt einigermaßen verstanden.
@Requi wenn ich davon was falsch verstanden hab korigiere mich bitte ^^
[AutoIT] Wo Sleep hin ? 10/20/2011 - AutoIt - 4 Replies Hallo ! Bei mir wiederhohlt sich das Script nicht mit den 2 Sec pause -.- woran liegt es ?
HotKeySet ("{c}", "start")
HotKeySet ("{e}", "Beenden")
Func start()
Run (".....exe")
WinWaitActive ("....")
Send ("test123")
Send ("{enter}")
Monitor is going to sleep. 12/19/2010 - Technical Support - 5 Replies Hallo epvp ,
Ich habe ein Problem undzwar :
Immer wenn ich Half Life 2 spiele kommt nach einer Weile , oder manchmal sogar sofort :
No signal going to sleep - bevor das geschieht wird der Bildschirm schwarz.
Mein System :
Graka : Intel Q35 Express chipset family
Monitor : Fujitsu Simens B17-2