Autoit boucle while qui monte en charge en continu en mémoire
Résolu
Fontainard
Messages postés
68
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Premier problème : Ma boucle est sensé tourner en continu, mais le problème c'est qu'elle monte en charge continuellement dans mon gestionnaire de tâche (Elle prend de + en + de mémoire à l'infini). Ce qui est assurément problématique.
Deuxième problème: Ma case Pause et quitter ne fonctionne plus lorsque la boucle est démarrée, ne fonctionne pas (a)
Décidément, inarrêtable cette boucle :P
Merci infiniment pour vous aide !
Premier problème : Ma boucle est sensé tourner en continu, mais le problème c'est qu'elle monte en charge continuellement dans mon gestionnaire de tâche (Elle prend de + en + de mémoire à l'infini). Ce qui est assurément problématique.
Deuxième problème: Ma case Pause et quitter ne fonctionne plus lorsque la boucle est démarrée, ne fonctionne pas (a)
Décidément, inarrêtable cette boucle :P
Merci infiniment pour vous aide !
$GUI = GUICreate("Surveillant de tâches IRIS", 310, 60, 5, 5, $WS_OVERLAPPEDWINDOW, $WS_EX_TOPMOST)
$Boutonstart = GUICtrlCreateButton("Surveiller", 5, 5, 150, 50)
$Boutonstop = GUICtrlCreateButton("Pause", 155, 5, 150, 50)
GUISetOnEvent($GUI_EVENT_CLOSE,"Quitter")
GUISetState()
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Exit
Case $Boutonstart
while 1
$NomFichier = "nom.txt"
$ChaineRecherchee = "rapportée"
$i = 1
$doublon = 0
$nombrefichiers = 0
$Fichier = FileOpen($NomFichier, 0)
If $Fichier = -1 Then
MsgBox(0, "Erreur", "L'ouverture du fichier est impossible")
Exit
EndIf
While 1.
$ligne = FileReadLine($Fichier)
If @error = -1 Then
ExitLoop
Else
If StringInStr($ligne, $ChaineRecherchee, 2) <> 0 Then
$doublon = $doublon + 1
EndIf
$i = $i + 1
EndIf
$nombrefichiers = DirGetSize("H:\TEST",1)
;MsgBox(0,"information","le repertoire cible contient "&$nombrefichiers[1] & " fichiers",2)
WEnd
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
If $doublon = 1 Then
;MsgBox(0, "Information", "Une seule tâche se déroule", 1)
ElseIf $doublon > 1 Then
Local $Body ="Deux tâches rapportées ont été détectés"
MsgBox(0, "Information", "Doublon détécté, envoi de la notification", 5);
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf
Sleep(20*60000)
Else
;MsgBox(0, "Résultat", "Aucune tâche en cours d'éxécution", 1)
Sleep(20*60000)
EndIf
If $nombrefichiers[1] > 20 Then
Local $Body = "20 fichiers ce sont accumulés dans le répértoire"
MsgBox(0, "Information", "20 fichiers ce sont accumulés dans le répértoire, envoi de la notification", 5);
$ro = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $ro)
EndIf
Sleep(20*60000)
EndIf
If $nombrefichiers[1] > 20 and $doublon > 1 Then
Local $Body = "Deux tâches rapportées ont été détectés et 20 fichiers ce sont accumulés dans le répértoire"
MsgBox(0, "Information", "20 fichiers ce sont accumulés dans le répértoire, envoi de la notification", 5);
$ri = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $ri)
EndIf
Sleep(20*60000)
Endif
;60000 = 1 minute
Sleep(6000)
WEnd
Case $Boutonstop
$pause = 1
EndSwitch
WEnd
A voir également:
- Autoit while
- Autoit - Télécharger - Divers Utilitaires
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Services en ligne
- Error code 1309 mac while copying ✓ - Forum MacOS
- Accès impossible à mon compte Bon Coin ✓ - Forum Réseaux sociaux
- While fscanf ✓ - Forum C
1 réponse
Salut.
Supprime cette ligne.
Car cela appelle, non pas la "case", mais la fonction Quitter(), que tu n'as pas.
Et n'oublie pas de mettre les includes concernant :
- $GUI_EVENT_CLOSE (include GUIConstantsEx.au3)
- $WS_OVERLAPPEDWINDOW / $WS_EX_TOPMOST (include WindowsConstants.au3)
@++
GUISetOnEvent($GUI_EVENT_CLOSE,"Quitter")
Supprime cette ligne.
Car cela appelle, non pas la "case", mais la fonction Quitter(), que tu n'as pas.
Et n'oublie pas de mettre les includes concernant :
- $GUI_EVENT_CLOSE (include GUIConstantsEx.au3)
- $WS_OVERLAPPEDWINDOW / $WS_EX_TOPMOST (include WindowsConstants.au3)
@++