Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [VB6]Api SetTimer

  1. #1
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247

    [VB6]Api SetTimer

    Siccome devo implementare un applicativo che si attivi ogni 10 minuti, ho utilizzato per creare un timer di sistema la funzione API di Windows SetTimer.Fino a qui tutto bene.
    Con il setTimer imposto appunto il timer e ogni quanto tempo deve essere lanciato:

    codice:
    timerID = SetTimer(0, 0, time_ciclo, AddressOf myTimer)
    dove time_ciclo è il tempo in millisecondi tra una chiamata all'altra e myTimer è la funzione che deve essere lanciata.

    Il mio problema è questo:siccome la funzione myTimer deve fare diverse elaborazioni che richiedono svariati minuti quando l'utente mi clicca il pulsante exit dove io scarico tutti i form e lancio la killTimer(funzione che distrugge il timer creato precedentemente) ma ancora siamo all'interno dell'elaborazione della funzione myTimer, mi rimane aperta in applicazioni un istanza del mio software;
    Invece se si preme il pulsante exit quando la funzione Mytimer ha finito l'elaborazione il mio applicativo si scarica correttamente.

    Esiste un modo per evitare il problema evidenziato sopra?
    Sicuramente è la funzione api settimer che mi crea il disguido,quindi qualche idea in proposito?

    Grazie a tutti.
    Andrea

  2. #2
    siccome il timer l'hai creato nello stesso thread dell'applicazione puoi:
    a) se la funzione richiamata può contenere dei doevents puoi testare che l'operazione non sia stata annullata altrimenti gli dai un exit
    b) chiamare una zeromemory (puntatore alla funzione, 4)
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Grazie prima di tutto per la risposta.
    La Zeromemory è una funzione API?
    Questa è la sua dichiarazione?
    Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (Destination As Any, ByVal Length As Long)?
    4 per la lunghezza perchè?
    Come lancio operativamente la funzione ZeroMemory?

    Grazie in anticipo.
    Andrea

  4. #4
    1) si
    2) si
    3) perchè windows è un sistema a 32 bit (4 Byte) e le sue funzioni ritornano sempre interi a 32 bit
    4) call Zeromemory(AddressOf myTimer, 4)
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Purtroppo la situazione non cambia!

    pur lanciando al momento dell'uscita la funzione zeromemory il mio software si chiude ma una sua istanza rimane attiva tra i processi in esecuzione!

    Qualche altra idea xegallo ?
    Grazie per la disponibilità
    Andrea

  6. #6
    puoi sempre chiuderti thread e processi a mano ma ti suggerirei di riconsiderare la prima soluzione che ti avevo proposto
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  7. #7
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Scusa xegallo se aprofito delle tue conoscenze ma è normale il fatto che se io setto il timer ad 1 minuto nel senso che deve essere lanciata una funzione ogni minuto e l'elaborazione di questa funzione supera il minuto comunque l'api timer mi fà partire una seconda chiamata?
    Questo con il controllo timer non mi capitava ossia la funzione veniva lanciata appena questa terminava il timer ripartiva con il conteggio.

    Grazie
    Andrea

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.