App console: tardivo avvio visualizzazione records.

di il
4 risposte

App console: tardivo avvio visualizzazione records.

Buonasera.
Come ho scritto in un precedente thread, ho sviluppato la mia prima app console, che penso funzioni correttamente.
La app però impiega dai 10 ai 40 secondi per caricare il primo records del datatable sottostante.Poi, il funzionamento ha tempi normalissimi,ma non capisco cosa ne blocchi l'esecuzione.
Questo il codice a cui è richiesto di mandare in esecuzione i records:

   Sub main()
       Console.SetWindowSize(130, 27)
       Console.Title = "Esempio di gestione db tramite app console"
       Console.Clear()
       Console.ForegroundColor = ConsoleColor.Green
       Console.WriteLine("F1=help")
       Console.WriteLine("F2=cerca")
       Console.Write("ESC=termina operazione")
       Console.SetCursorPosition(100, 0) : Console.Write("posizione cursore:")
       Console.SetCursorPosition(100, 1) : Console.Write("tasto BlocNum:")
       Console.SetCursorPosition(100, 2) : Console.Write("tasto INSERT :")
       Console.ResetColor()
       statoInsert = True
       cl.anagrafica()
       cl.opt()
       da.Fill(ds, "Legali")
       dv = New DataView(ds.Tables(0))
       If Not ds.Tables(0).Rows.Count > 0 Then
           MsgBox("Il database è vuoto." & vbCrLf & "Seleziona N(uovo) dal manù delle opzioni ed inserisci i records.")
           GoTo inizio
       End If
       indice = 0
       showRecord(indice)
inizio:
       menù()
   End Sub
   Sub showRecord(ByVal indice As Integer)
       statoBlockNum = My.Computer.Keyboard.NumLock
       statoInsert = Control.IsKeyLocked(Keys.Insert)
       Console.SetCursorPosition(115, 1) : Console.Write(If(statoBlockNum = False, "Disabilitato", "Abilitato      "))
       Console.SetCursorPosition(115, 2) : Console.Write(If(statoInsert = False, "sovrascrittura", "inserimento    "))
       If indice < 0 Or indice > ds.Tables(0).Rows.Count - 1 Then Exit Sub
       mID = ds.Tables(0).Rows(indice).Item(0)
       mRagsoc1 = ds.Tables(0).Rows(indice).Item(1)
       mProv = ds.Tables(0).Rows(indice).Item(2)
       mComune = ds.Tables(0).Rows(indice).Item(3)
       mIndirizzo = ds.Tables(0).Rows(indice).Item(4)
       mCap = ds.Tables(0).Rows(indice).Item(5)
       cl.pulisciRecord()
       Console.SetCursorPosition(61, 6) : Console.WriteLine(Trim(mID))
       Console.SetCursorPosition(61, 8) : Console.WriteLine(Trim(mRagsoc1))
       Console.SetCursorPosition(61, 10) : Console.WriteLine(Trim(mProv))
       Console.SetCursorPosition(61, 12) : Console.WriteLine(Trim(mComune))
       Console.SetCursorPosition(61, 14) : Console.WriteLine(Trim(mIndirizzo))
       Console.SetCursorPosition(61, 16) : Console.WriteLine(Trim(mCap))
       Console.SetCursorPosition(118, 23)
   End Sub

Nel caso che "I Programmatori" lo consentano, potrei aprire una Live share perchè  possiate mandare in esecuzione l'app,visionare il codice e suggerirmi la soluzione più idonea. Perdonatemi, forse sto chiedendo troppo. Preciso però che non sto chiedendo codice, ma solo -come sempre- i vostri consigli esperti.
Posso condividere il programma? nel caso di risposta affermativa comunicherò il link con il codice utile per la condivisione.
Grazie.

4 Risposte

  • Re: App console: tardivo avvio visualizzazione records.

    Di quale DB parliamo? Quanti record totali leggi all'inizio? Qual è il codice di cl.anagrafica? E cl.opt?

    Dovresti imparare ad eseguire il codice con il debug, riga per riga per capire intanto quale impiega quel tempo.    

  • Re: App console: tardivo avvio visualizzazione records.

    Trattasi di una tabella Access con circa 300 records.

    I codici anagrafica e opt hanno la funzione di disegnare rispettivamente la maschera per la visualizzazione dei dati e il menù delle opzioni per la gestione dei dati e non possono quindi ritardare nessuna operazione, perchè sono semplici righe di testo.

    Ogni volta che ho un problema di codice uso regolarmente il debug ,ma nella fattispecie ti assicuro che non mi evidenzia nessuna particolare anomalia : si blocca per lunghi secondi quando legge la riga da.Fill(ds, "Legali") .

    Grazie,Oregon. A pensarci bene, non è un un grosso problema.E' significativo però capire perchè si verificano certi eventi e che solo informatici esperti capiscono e sanno speigare.

      

  • Re: App console: tardivo avvio visualizzazione records.

    Non credo cambi molto, ma se devi leggere solo una tabella non ti conviene usare un DataTable anzichè un DataSet ??

  • Re: App console: tardivo avvio visualizzazione records.

    SirJo, ho seguito il tuo consiglio. Ho fatto delle prove, ma -come tu stesso anticipavi- non ha fatto molta differenza.

    Ho invece avuto buoni risultati eseguendo la compattazione del db access. Ora impiega meno di 10 secondi.

    Grazie.

Devi accedere o registrarti per scrivere nel forum
4 risposte