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

    VB.Net Lentezza nel

    Buonaserata a tutti
    volevo chiedervi un piccolo aiuto, perchè ho un problema di lentezza durante l'utilizzo della mia applicazione.
    Ho circa 8 combobox che vengono "fillati" attraverso questo codice:


    query = "SELECT Autori.id AS ID, Autori.Nome AS Nome From Autori Order By Autori.Nome ASC "
    Dim VisualizzaAutori As New MySql
    VisualizzaAutori.Login()
    Dim data_visualizzaautori = VisualizzaAutori.RiempiDataGrid(query)
    VisualizzaAutori.Logout()
    volumi_modifica_autore1.DataSource = data_visualizzaautori
    volumi_modifica_autore1.DisplayMember = "Nome"
    volumi_modifica_autore1.ValueMember = "ID"
    volumi_modifica_autore2.DataSource = data_visualizzaautori
    volumi_modifica_autore2.DisplayMember = "Nome"
    volumi_modifica_autore2.ValueMember = "ID"
    volumi_modifica_autore3.DataSource = data_visualizzaautori
    volumi_modifica_autore3.DisplayMember = "Nome"
    volumi_modifica_autore3.ValueMember = "ID"
    volumi_modifica_autore4.DataSource = data_visualizzaautori
    volumi_modifica_autore4.DisplayMember = "Nome"
    volumi_modifica_autore4.ValueMember = "ID"
    volumi_modifica_autore5.DataSource = data_visualizzaautori
    volumi_modifica_autore5.DisplayMember = "Nome"
    volumi_modifica_autore5.ValueMember = "ID"
    volumi_modifica_autore6.DataSource = data_visualizzaautori
    volumi_modifica_autore6.DisplayMember = "Nome"
    volumi_modifica_autore6.ValueMember = "ID"
    volumi_modifica_autore7.DataSource = data_visualizzaautori
    volumi_modifica_autore7.DisplayMember = "Nome"
    volumi_modifica_autore7.ValueMember = "ID"
    volumi_modifica_autore8.DataSource = data_visualizzaautori
    volumi_modifica_autore8.DisplayMember = "Nome"
    volumi_modifica_autore8.ValueMember = "ID"


    Protected Friend Sub Login()
    conn.Close()
    Dim user As String = My.Settings.utentedb
    Dim password As String = My.Settings.passworddb
    Dim ipAddress As String = My.Settings.indirizzodb
    Dim myDatabase As String = My.Settings.nomedb
    Dim myport As String = My.Settings.portadb

    conn.ConnectionString = "server=" & ipAddress & ";port=" & myport & ";user id=" & user & "; password= " & password & " ;database=" & myDatabase & ""

    Try
    If conn.State = ConnectionState.Closed Then
    conn.Open()
    End If
    Catch myerror As MySqlException
    MessageBox.Show("Error Connecting to Database: " & myerror.Message)
    Catch ex As Exception
    MsgBox(ex.Message)
    End Try

    End Sub

    Protected Friend Sub Logout()
    If Not conn.State = ConnectionState.Closed Then
    conn.Close()
    conn.Dispose()
    End If
    End Sub

    Function RiempiDataGrid(ByVal querysql As String)
    Dim myAdapter As MySqlDataAdapter
    Dim table As DataTable
    Try
    myAdapter = New MySqlDataAdapter(querysql, conn)
    table = New DataTable
    myAdapter.Fill(table)
    Catch myerror As MySqlException
    MessageBox.Show("Error Connecting to Database: " & myerror.Message)
    Return False
    Exit Function
    Catch ex As Exception
    MsgBox(ex.Message)
    Return False
    Exit Function
    End Try
    Return table
    End Function
    Il risultato della query sono circa 600 righe.

    non riesco a capire se è un problema di codice (cioè l'applicazione è scritta male), un problema di rendering come mi ha suggerito una mio collega oppure se utilizzare la proprietà datasource del controllo combobox possa rallentare così tanto.

    grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Prima bisogna determinare se la lentezza è dovuta proprio all'operazione di binding: ci sono altre istruzioni che vengono eseguite prima e dopo (es. "Login" e "Logout").

    Esegui il tuo programma passo per passo, istruzione per istruzione, andando in debugging e accertandoti con sicurezza di qual è il punto che richiede la maggior parte del tempo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    sembrerebbe che rallenti quando vado ad impostare il datasource e i successivi displaymember e valuemember.

    posso velocizzare in qualche modo questo tipo di processo? anche utilizzando metodi diversi

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da vejita866
    sembrerebbe che rallenti quando vado ad impostare il datasource e i successivi displaymember e valuemember.
    Sembra solo oppure è così?

    E ancora, la lentezza sta nel binding di tutti i controlli, oppure ciascuna operazione di binding del singolo controllo risulta lenta?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    beh, ho fatto il debug e per ogni singola operazione (binding, datasource e valuemember).
    ho visto che mi fa lo stesso lavoro un datagrid quando faccio il binding di una 30ina di righe in mysql con lo stesso metodo descritto per i combobox.

    Dato che sto usando dei controlli krypton, non è che possano essere quelli a rallentare?

  6. #6
    ok non sono quelli.
    su internet ho visto che forse è meglio inserire gli item "a mano"
    però qui mi si pone un dubbio.

    come faccio ad inserire, oltra al display member, anche il value member nel combobox?
    io uso la sintassi combobox.items.add("valore")
    Su internet non sono riuscito a trovare niente a riguardo. mi potete aiutare?

  7. #7

  8. #8

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.