Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB2010] Timers di server

    Timer di server (System.Timers.Timer)... Il timer basato su server è progettato per l'uso con i thread di lavoro in ambienti multithread

    Alla chiusura del form vorrei che il timer (legge un file esterno ogni 3 secondi) effettuasse ancora alcune letture.

    Però se in Form_Closing metto uno Sleep(10000)... il timer smette comunque di leggere.

    Come mai? Non dovrebbe essere indipendente da uno Sleep sul Thread principale?

  2. #2
    Sicuro di aver usato un System.Timers.Timer e non un System.Windows.Forms.Timer?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Sicuro...uso solo quelli.

  4. #4
    ... dirò di più....

    Il timer è in un form secondario, per cui lo Sleep è nell' evento Form_Closing di un form secondario.

    Se in quei 10 secondi cerco di chiudere il programma, da NotifyIcon sulla Tray Bar... non riesco nemmeno ad aprire il popup per premere Exit... click destro... nulla.

    Da cui si evince, se ben capisco, che un Sleep in un form secondario (perlomeno nell' evento Form_Closing) blocca anche il Form principale.

  5. #5
    Risolto con un banalissimo codice, tuttavia inserendo un counter (Letture), quindi codice "inutile" in più, nel timer.

    codice:
    If TimerLeggeHH.Enabled Then
    
    Debug.Print("Attendo 2 letture")
    
    Letture = 0
    
    Do Until Letture >= 2
    
    Application.DoEvents()
    
    Loop
    
    EndIf
    

    Resta la curiosità di capire perché uno Sleep blocca un Timer di Server...

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.