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

    [C#]Eseguire istruzioni dopo che il programma si sia avviato

    Salve a tutti,
    sto sviluppando un autopatcher in C#.
    Vengo al dunque: questo ogni volta che si avvia deve eseguire il controllo dell'hash md5 dei files, solo che ci mette un pò ed il form appare soltanto dopo che ha controllato tutti i files.
    Ovvero: avvio il programma, questo controlla i files (impiega tipo 60secondi) e dopo quei 60 secondi visualizza il form. Un utente normale potrebbe pensare che il programma non funzioni.

    Vorrei fare in modo che prima venisse visualizzato il form principale e poi venissero eseguite le istruzioni per aggiornare.


    codice:
    private void Main_Load(object sender, EventArgs e){
             aggiorna();
    }
    Main è il form principale.
    aggiorna è la funzione che utilizzo per il controllo dell'hash dei files, dopo questa ne lancia un'altra che procede al download se necessario.

    Grazie in anticipo a chiunque mi risponda

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    devi fare quella chiamata in un altro thread.

    .net ha la classe Thread e qualche wrapper che rende il compito piu semplice, personalmente preferisco il backgroundworker.

    http://forum.html.it/forum/showthrea...readid=1449641

  3. #3
    Grazie mille! Funziona!
    Ho sistemato il codice e risolto così:

    codice:
     private void Main_Load(object sender, EventArgs e)
            {
                work();
            }
    
            private void work()
            {
                BackgroundWorker bgw = new BackgroundWorker();
        
                //Lavoro da fare nel thread secondario
                bgw.DoWork += (s, e) =>
                {
                    aggiorna();
                };
    
                //Operazioni da fare non appena si ritorna al thread principale.
                //Qui sei nel 3d principale, puoi tornare a toccare gli elementi grafici, per esempio...
                bgw.RunWorkerCompleted += (s, e) =>
                {
                    finalcheck(); //scarica aggiornamenti se necessario
                    //Main.Close();
                };
    
                //Operazioni da fare subito prima di eseguire le operazioni in multithreading
                //Formloading.ShowDialog();
    
                //Eseguo il bgw.
                bgw.RunWorkerAsync();
            }

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.