Moin moin zusammen,
habe eine kurze Frage. Ich habe eine sehr sehr komplexe Software erstellt und habe nachdem ich viele Funktionen in letzter Zeit eingebaut habe, das Problem, dass die GUI nach gewisser Zeit sporadisch einfriert. Ich kann diesen Fehler nicht nachstellen.
Ich habe nun die vermutung das es am Timer / bzw. den Timern liegt die ich in der Scheife eingebaut habe.
Frage in die Runde: Hat jemand ein Skript laufen, bei dem mehrere Timer in der Schleife laufen und welche Erfahrungen habt ihr damit gemacht? Ist es möglich das zwei Timer sich in die Quere kommen können und dann zum Freeze führen?
Grüße,
KriZza
Anbei nur mal ein kleiner Ausschnitt der "While-Schleife"
AutoIt
While 1
$msg = GUIGetMsg(1)
If TimerDiff($iTimer1) > 1000 Then ; Alle 1 Sekunden
Global $readshowname = RegRead("HKEY_CURRENT_USER\Software\TTC-Viewer", "SHOWNAME")
$readlogin1 = RegRead("HKEY_CURRENT_USER\Software\TTC-Viewer", "LoginNameActive")
If IniRead(@ScriptDir & "\CODE\TMPDATA\STATES\userdata.cw1", $readlogin1, "ActiveProfile", "") = "---" Then
WinSetTitle($main_form, "", $Titlename & " | Benutzer: " & $readshowname & " | Schulungsprofil: ---")
Else
WinSetTitle($main_form, "", $Titlename & " | Benutzer: " & $readshowname & " | " & _
"Schulungsprofil: " & $READPROFILE & " (" & IniRead(@ScriptDir & "\DATA\USERS\" & $readlogin1 & "\PROFILES\" & $READPROFILE, "GlobalInfo", "Date", "") & "-" & _
IniRead(@ScriptDir & "\DATA\USERS\" & $readlogin1 & "\PROFILES\" & $READPROFILE, "GlobalInfo", "DateEnd", "") & ")")
EndIf
_checkribbon($iTimer2)
;~ _checkipadress()
$iTimer1 = TimerInit()
EndIf
If TimerDiff($iTimer2) > 2000 Then ; Alle 2 Sekunden
If $STATEMINIM = 0 Then
_refreshroutine()
_getthumbnails()
EndIf
$iTimer2 = TimerInit()
EndIf
If TimerDiff($iTimer5) > 5000 Then ; Alle 5 Sekunden
If ProcessExists("TC-GetContent.exe") = False Then ShellExecute(@ScriptDir & "\APPS\TC-GETCONTENT\TC-GetContent.exe")
$READMAXENTRIESOFERROR = GUICtrlRead($MAXNUMERSOFERRORENTRIES)
if $READMAXENTRIESOFERROR > 0 Then
$COUNTALLLINESINERROR = _FileCountLines(@ScriptDir & "\CODE\ERROR.log")
If $COUNTALLLINESINERROR > $READMAXENTRIESOFERROR Then
$todeleteentries = $COUNTALLLINESINERROR - $READMAXENTRIESOFERROR
for $i= 1 to $todeleteentries
_FileWriteToLine(@ScriptDir & "\CODE\ERROR.log", $READMAXENTRIESOFERROR,"",1)
Next
EndIf
EndIf
_checkclientstateinfo()
$iTimer5 = TimerInit()
EndIf
If TimerDiff($iTimer3) > 10000 Then ; Alle 10 Sekunden
_uploadsignoflife()
_downloadsrvmsgs()
If IniRead(@ScriptDir & "\CODE\TMPDATA\STATES\pos.cw1", "Change", "Value", "0") = "1" Then
_Ribbon_Destroy($oRibbFramework, $oApp, $oHandlers)
_Ribbon_Create($main_form, $hRibInstance, $sResName, $oRibbFramework, $oApp, $oHandlers)
IniWrite(@ScriptDir & "\CODE\TMPDATA\STATES\pos.cw1", "Change", "Value", "0")
EndIf
_checkerrors()
$SIZEOFERROR = FileGetSize(@ScriptDir & "\CODE\ERROR.log")
$CHACESIZEOFERROR = IniRead(@ScriptDir & "\CODE\TMPDATA\STATES\sizeoferror", "INFO", "VALUE", "")
If $SIZEOFERROR <> $CHACESIZEOFERROR Then
If IniRead(@ScriptDir & "\DATA\USERS\" & $readlogin1 & "\userconfig.cw1", "SETTINGS", "ERRORLOGAUTOUPDATE", "1") = "1" Then
_refresherrorlog()
IniWrite(@ScriptDir & "\CODE\TMPDATA\STATES\sizeoferror", "INFO", "VALUE", FileGetSize(@ScriptDir & "\CODE\ERROR.log"))
EndIf
EndIf
$iTimer3 = TimerInit()
EndIf
If TimerDiff($iTimer4) > 30000 Then ; Alle 30 Sekunden
__checkupdate()
_gettcclienterrors()
If IniRead(@ScriptDir & "\CODE\TMPDATA\UPDATEINFO\update.cw1", "WARTUNG", "Value", "0") = "1" Then
$flaglock3 = IniRead(@ScriptDir & "\CODE\TMPDATA\UPDATEINFO\update.cw1", "WARTUNG", "flag", "")
$titlelock3 = IniRead(@ScriptDir & "\CODE\TMPDATA\UPDATEINFO\update.cw1", "WARTUNG", "title", "")
$msglock3 = IniRead(@ScriptDir & "\CODE\TMPDATA\UPDATEINFO\update.cw1", "WARTUNG", "message", "")
$timelock3 = IniRead(@ScriptDir & "\CODE\TMPDATA\UPDATEINFO\update.cw1", "WARTUNG", "time", "")
TrayTip($titlelock3,$msglock3,$timelock3,$flaglock3)
EndIf
$iTimer4 = TimerInit()
EndIf
Alles anzeigen