Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    51

    [VB.NET] Velocizzare esecuzione di comando selezione stringhe

    Salve a tutti,

    ho creato un'applicazione, e nell'evento Form_Load, ho inserito questo codice:
    codice:
    For Each st As String In My.Settings.Times
         Form1.TextBox4.AutoCompleteCustomSource.Add(st) 
    Next 
    
    For Each st As String In My.Settings.Times
         Form1.ListBox1.Items.Add(st) 
    Next
    Ho potuto notare che l'applicazione è molto lenta nel gestire questo codice, specialmente se il My.Settings.Times è molto lungo. La form quindi non viene visualizzata immediatamente, e l'utente deve aspettare circa 8 secondi (ovviamente questo varia anche da macchina a macchina).

    La mia domanda è: esiste un trucco o un sistema per velocizzare questo sistema e rendere l'applicazione più "scattante" al suo avvio?

    Grazie a tutti ,
    Panda

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Intanto, perché 2 for each ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    51
    Mah, non lo so. Hai ragione!
    Adesso provo ad unire tutti e due, anche se non penso che cambi qualcosa...

  4. #4
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    Perché non utilizzare un Thread per i cicli ? risolveresti il problema della visualizzazione del form, metti un elegante " Attendere Prego " e magari una progress bar.


  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Typo lo dici come se fosse la cosa più naturale del mondo!

    Io ci ho provato mille volte (con i backGroundWorkers) ma credo di esser ancora troppo scarsa per questi livelli di programmazione xP

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Beh, non è difficile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Originariamente inviato da oregon
    Beh, non è difficile ...
    QUOTO!
    Basta capire il concetto e studiare gli strumenti a disposizione...
    L' esempio più banale che mi viene in mente giusto per il "concetto":
    codice:
      Dim finito As Boolean
    
        Private Sub test()
            finito = False
            For i = 0 To 10000
                System.Threading.Thread.Sleep(1)
            Next
            finito = True
        End Sub
    
        'questo blocca il form
        Private Sub Button1_Click() Handles Button1.Click
            test()
        End Sub
    
        'questo NON blocca il form
        Private Sub Button2_Click() Handles Button2.Click
            BackgroundWorker1.RunWorkerAsync()
        End Sub
    
        'test viene eseguito su un thread separato
        Private Sub BackgroundWorker1_DoWork() Handles BackgroundWorker1.DoWork
            test()
        End Sub
    
        'in caso di button2.click....
        Private Sub Button3_Click() Handles Button3.Click
            If finito = True Then
                MsgBox("finito")
            Else
                MsgBox("non ho finito")
            End If
        End Sub

  8. #8
    Occhio però che gli oggetti Windows Forms non sono thread safe, quindi bisogna usare sempre Form.Invoke se si devono manipolare i controlli del form.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    Typo lo dici come se fosse la cosa più naturale del mondo!

    Io ci ho provato mille volte (con i backGroundWorkers) ma credo di esser ancora troppo scarsa per questi livelli di programmazione xP
    Non sono il dio del .Net ed ho anche io i miei grandi problemi con i Thread molto spesso, ne parlo naturalmente solo perchè sono giorni che li uso per un mio progetto e devo dire che alla fine non sono troppo complicati, ovviamente è un concetto complesso che richiede anche parecchio tempo per lo studio approfondito. C'è però da fare una distinzione, sono il primo che suggerisce di documentarsi al 100 % su quello che si vuole utilizzare, ma quando lo strumento serve per eseguire compiti base ( come affidare un semplice ciclo ) non è necessaria una comprensione a 360° dell'argomento.


    Originariamente inviato da MItaly
    Occhio però che gli oggetti Windows Forms non sono thread safe, quindi bisogna usare sempre Form.Invoke se si devono manipolare i controlli del form.
    Qui entra in ballo un buonissimo articolo che ho trovato 5 giorni fa

    Il link adesso non va... non capisco se dipende dalla mia connessione o cosa, comunque è di code project quindi prima o poi funzionerà



    PS: Dipende da loro, ho appena finito di caricare la pagina e credo ci siano problemi da parte loro.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.