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

    [VB 2010 e ACCESS 2007] Avvio programma lento poi veloce

    Sarà magari una domanda comune...
    ho fatto un programma in vb 2010 che si connette ad un db access; funziona tutto. l unico problema è che alla PRIMA apertura del form passano 5-10 per la visualizzazione; mentre poi quando chiudo e riapro è tutto istantaneo.

    posto il codice

    codice:
    Public Class frmASSEGNAZIONI
        Dim CONN As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=assegnazioni.accdb"
        Dim SQL As String
        Dim s() As String
        Dim controllodata As String
        Dim modifica As Integer
    
        Private Sub frmASSEGNAZIONI_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim cn As New OleDbConnection(CONN)
            Dim i As Integer
    
            i = 0
            modifica = 0 ' se 0 inserisco dati, se 1 modifico
    
            'resetto i campi
            dtpDATA.Text = ""
            cmbORA.Refresh()
            txtCLIENTE.Text = ""
            txtCITTA.Text = ""
            cmbMODELLO.Items.Clear()
            cmbMODELLO.Text = ""
            chkRETE.Checked = False
            chkFT.Checked = False
            chkCONCLUSA.Visible = False
            chkADMIN.Checked = False
            chkSERVER.Checked = False
            txtNPC.Text = ""
            txtRIF.Text = ""
            btnERASE.Enabled = False
    
            'resetto treeview
            tvASSEGNAZIONI.Nodes.Clear()
    
            'POPOLO COMBO MODELLI MACCHINE
            cn.Open()
            SQL = "SELECT * FROM MODELLI ORDER BY MARCA"
            Dim cmd As New OleDbCommand(SQL, cn)
            Dim objDataReader As OleDbDataReader = cmd.ExecuteReader
    
            While objDataReader.Read
                cmbMODELLO.Items.Add(objDataReader("marca") & " " & objDataReader("modello"))
            End While
    
            objDataReader.Close()
            cn.Close()
    
            'POPOLO TREEVIEW CON ASSEGNAZIONI
            cn.Open()
            SQL = "SELECT id,data,cliente,conclusa FROM ASSEGNAZIONI ORDER BY DATA"
            cmd = New OleDbCommand(SQL, cn)
            objDataReader = cmd.ExecuteReader
    
            While objDataReader.Read
                If i = 0 Then
                    tvASSEGNAZIONI.Nodes.Add(objDataReader("data"))
                    tvASSEGNAZIONI.Nodes(i).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente"))
                    i = i + 1
                Else
                    If objDataReader("data") = tvASSEGNAZIONI.Nodes(i - 1).Text Then
                        tvASSEGNAZIONI.Nodes(i - 1).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente"))
                    Else
                        tvASSEGNAZIONI.Nodes.Add(objDataReader("data"))
                        tvASSEGNAZIONI.Nodes(i).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente"))
                        i = i + 1
                    End If
    
                End If
            End While
    
            objDataReader.Close()
            cn.Close()
    
            'POPOLO LIST BOX
    
            ListView1.Clear()
    
            ' Set ListView Properties  
            ListView1.View = View.Details
            ListView1.GridLines = True
            ListView1.FullRowSelect = True
            ListView1.HideSelection = False
            ListView1.MultiSelect = False
    
            ' Create Columns Headers  
            ListView1.Columns.Add("mesi")
            ListView1.Columns.Add("totale mese")
            ListView1.Columns.Add("totale fuori triveneto")
    
            cn.Open()
            SQL = "SELECT MONTH(ASSEGNAZIONI.data) as mese, COUNT(*) as TOTALE_INSTALLAZIONI, SUM(ASSEGNAZIONI.ft) as TOTFT FROM(ASSEGNAZIONI) GROUP BY MONTH(ASSEGNAZIONI.data)"
            cmd = New OleDbCommand(SQL, cn)
            objDataReader = cmd.ExecuteReader
    
            While objDataReader.Read
                ' Create List View Item (Row)  
                Dim lvi As New ListViewItem
    
                ' First Column can be the listview item's Text  
                lvi.Text = MonthName(objDataReader("mese").ToString)
    
                ' Second Column is the first sub item  
                lvi.SubItems.Add(objDataReader("totale_installazioni").ToString)
                lvi.SubItems.Add((objDataReader("totft") * -1).ToString)
    
                ' Add the ListViewItem to the ListView  
                ListView1.Items.Add(lvi)
    
    
            End While
    
            objDataReader.Close()
            cn.Close()
        End Sub
    Potete spiegarmi a cos'è dovuta tale latenza?

    grazie

  2. #2
    È normale, alla prima partenza:
    - devono essere caricate da disco ed eseguite le varie dll di .NET - e non è poca roba;
    - inoltre, alla partenza del programma questo viene JIT-compilato, ovvero, il codice pseudo-compilato del tuo eseguibile viene compilato in codice nativo per essere effettivamente eseguito; questa operazione prende il suo tempo, ma una volta che una procedura è stata JIT-compilata il codice generato viene usato per tutto il resto dell'esecuzione del programma.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.