Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [vb.net]schedulatore

    ciao.
    Ho una tabella a cui vengono accodate richieste di scansione sul filesystem.
    per ogni riga che identifica il percorso l'applicazione importa e cancella determinati files.
    ora io ho fatto qualcosa del genere:
    For Each dr As DataRow In IDataSetServizio.Tables("t_importazioneImmediata") .Rows
    scansioneImmediata(dr("iid_percorso"), dr("iid_ricorsione"))
    Next

    quando ho finito la scansione sul filesystem del record devo cancellare il record stesso , in modo che non venga rieseguita la scansione.
    Il primo problema è cancellare il record dentro al ciclo(si puo?).
    il secondo è che se cancello il record e aggiorno il dataset altre righe potrebbero essere state aggiunte.
    come è meglio fare secondo voi?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Aggiungi un campo alla riga di tipo booleano (lo chiami Processed) inizialmente a False.
    Processi la riga solamente se questo campo e' False e subito dopo lo metti a True.

    All'uscita della For, fai una DELETE ... WHERE Processed = True

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie mille oregon.
    e se vengono aggiunte altre righe da processare ricarico il dataset ogni tot di minuti?
    puo' andare bene cosi?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... tanto troverai solamente le righe che hanno il campo Processed=False

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [vb.net]sheduler

    ciao.
    ho letto gli articoli consigliati sui servizi windows da voi sul forum.grazie
    Adesso ho creato uno sheduler che ogni tot di tempo va a ricercare e importare files.
    Utilizzo 2 thread , uno a priorita' alta per delle scansioni immediate e uno a priorita bassa per una ricerca in background molto vasta.
    Navigando ho visto l'oggetto threadpool e mi sono chiesto se poteva fare al caso mio , che invece creo i thread da codice.
    Solo che non ho capito molto come funziona.
    in pratica devo fare solo operazioni di i/o e ho una coda di richieste di scansioni(questo per le scansioni immediate)in una tabella su db.
    voi cosa mi consigliate?
    è giusta l'idea dei due thread?
    grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    up.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    up

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Torno a chiedere aiuto perchè utilizzando due thread mi da dei problemi.
    Ho creeato un unica classe myservice e la instanzio allo scadere di due diversi timer cosi':
    in un timer ogni 2 secondi:
    If IThreadpalta Is Nothing Then
    Isheduleralta = New MyService
    Isheduleralta.inLoad()
    IThreadpalta = New Thread(AddressOf Isheduleralta.Processa)
    IThreadpalta.Priority = ThreadPriority.Normal

    IThreadpalta.Start()
    Else
    If Not IThreadpalta.IsAlive Then
    Isheduleralta = New MyService
    Isheduleralta.inLoad()
    IThreadpalta = New Thread(AddressOf Isheduleralta.Processa)
    IThreadpalta.Priority = ThreadPriority.Normal
    IThreadpalta.Start()
    End If
    End If
    inload mi serve per le inizializzazioni(caricamento dataset ecc...)
    e in un alto timer dopo un minuto:
    If IThreadpbassa Is Nothing Then
    Ishedulerbassa = New MyService
    Ishedulerbassa.inLoad()
    IThreadpbassa = New Thread(AddressOf Ishedulerbassa.importa)
    IThreadpbassa.Priority = ThreadPriority.BelowNormal
    IThreadpbassa.Start()
    Else
    If Not IThreadpbassa.IsAlive Then
    Ishedulerbassa = New MyService
    Ishedulerbassa.inLoad()
    IThreadpbassa = New Thread(AddressOf Ishedulerbassa.importa)
    IThreadpbassa.Priority = ThreadPriority.BelowNormal
    IThreadpbassa.Start()
    End If
    End If
    IThreadpbassa e IThreadpalta sono una variabili di tipo Thread di classe
    solo che entrano in conflitto e non so perchè.
    chiedo a voi.

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.