Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    11

    [C#] Attendere fine del backgroundWorker prima di proseguire

    Salve a tutti,
    avrei bissogno di un aiuto, in pratica io ho fatto la mia bella applicazione che gli dō una singola cartella e lui mi fā tutte le operazioni tranquillamente, adesso volevo fare una funzione che mi ripetesse quello che faccio per 1 singola cartella, per tutte le cartelle contenute in una root. A tale scopo avevo fatto la seguente funzione:


    codice:
    private void RepeatForAll()
            {
                string root = BkPath;
                foreach (string SinglePath in Directory.GetDirectories(root))
                {
                    //while (backgroundWorker1.IsBusy == true) { }
                    BkPath = SinglePath;
                    textBox1.Text = SinglePath;
                    
                    button1.PerformClick();
                  }
    Praticamente secondo la mia idea, aggiornavo semplicemente il path ed effettuavo quello che facevo prima con una singola cartella col button 1.
    Adesso il problema sta nel fatto che fra le mille e mille operazioni che poi richiamerā il button 1, c'č un BackgroundWorker che prima premendo solo button1 funzionava perfettamente, adesso probabilmente colpevole la velocitā di esecuzione della premuta ripetuta di questo button1 il BackGroundWorker non riesce a completare le operazioni e conseguentemente tutto il programma mi vā in errore. Ho provato con quello che vedete nel commento ma non risolve, ho messo dei treadh.sleep ma non funzionano neanche. Potete darmi una soluzione? Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Se ho capito bene il problema puoi evitare i clic di troppo sul button usando la proprietā enabled sui controlli che possono creare problemi, č un metodo credo abbastanza "rozzo" ma per me ha funzionato...
    Quindi:[list=1][*]clic sul button[*]imposti enabled del button a false[*]fai quello che devi fare[*]imposti enabled del button a true[/list=1]
    Se non hai la possibilitā di sapere se i processi avviati dalla routine siano completi puoi sostituire il punto 4 con un timer che riattiverā i controlli, l' intervallo va messo ad "occhio" in base alle prestazioni del pc. Altrimenti, visto che operi su dei file, puoi usare un ciclo con un timer per verificare se i file siano stati modificati come vuoi tu.

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.