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

    Progettare un Timer per un Allarme

    Devo fare un Avviso con una finestra per la mia applicazione, nel Database ci sono la Data i Minuti e i secondi per quando deve scattare l'Avviso,

    come si procede ???

    nell'evento "Load" del "Form1" (il principale) si mette un "Timer" impostato ad 1 secondo, ad ogni "Tick" del "Timer" faccio fare una Query nel Database :

    Dim oComm As New SqlCommand("SELECT ID_Scadenza FROM Scadenze WHERE ID_Operatore='_ID_Operatore_' AND Data_Allarme='" & Data_Allarme & "'", oConn))

    se l'ID_Scadenza e' >0 allora apro un nuovo "Form Avviso":

    Ditemi qualcosa, e' troppo impegnativo a carico del Processore ???

    se si come posso fare ???
    oppure quali metodi si utilizza di solito ???

  2. #2
    devi fare una query al secondo?
    ma per controllare se sono stati immessi dati?
    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
    NO!
    per confrontare l'ora attuale all'ora della scadenza, se e' uguale allora apre il form dell'allarme.

    queste sono state altre 2 risposte su altri forum:
    -----------------------------------------------------------
    1)

    Io caricherei in un dataset tutte le scadenze (o quelle di un giorno se sono
    veramente troppe)
    Poi li ordinerei per scadenza e schedulerei la scadenza usando il timer
    System.Threading.Timer.

    Per sapere se nel db ci sono nuove scadenze (per aggiornare il dataset),
    potresti adottare 2 tecniche:
    1. Il db viene toccato solo dalla tua app. In questo caso tu sai quando fare
    il refresh del dataset senza dover eseguire polling
    2. Il db viene modificato da altri. In questo caso decidi un intervallo di
    polling sul database e esegui il refresh del dataset periodicamente. Il
    polling lo puoi fare anche qui con un timer. Se usi il controllo timer della
    toolbox non hai problemi di concorrenza ma se usi per questo task
    System.Threading.Timer o altri sistemi che fanno uso di thread, dovrai stare
    attento a gestire la sincronizzazione per accedere al dataset.

    Una volta eseguito il refresh del dataset, potrai rischedulare (metodo
    Change se non ricordo male) la nuova scadenza del timer.
    -----------------------------------------------------------------
    2)
    Bhe è un pò poco performante ogni secondo inviare una query al DB per testare la tua variabile che ti fa scattare l'allarme.
    Io opterei per una soluzione un pò diversa.....se si tratta di SQL, perchè non imposti un trigger che si attiva non appena viene introdotto un record nella tabella che soddisfa la tua query ?
    Il trigger dovrebbe occuparsi di scrivere un file di testo su disco; a questo punto la tua applicazione si sincronizza su un file anzichè usando una query !
    Questa è solo un'idea !


    COSA NE PENSI ???

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.