La mia applicazione desktop Windows .NET crea un report HTML e ha 3 fasi principali. Può creare più report.
Visualizza una barra di avanzamento in modo che l'utente sappia (stima) quanto tempo ci vorrà (oltre a rassicurare che il sistema non si sia bloccato da una GUI di aggiornamento). Quindi, se dovessi generare 3 rapporti, ci sarebbero un totale di 9 fasi (3 fasi * 3 rapporti).
Il problema che ho ora è che il processo sta impiegando troppo tempo. Come tale, ho bisogno di usare i thread in modo da poter iniziare sulla fase 1, quindi aprire una nuova discussione che completa la fase 2 e 3. Mentre le fasi 2 e 3 sono in corso, la voce successiva nell'elenco inizia con la fase 1 e il processo continua. Spero che abbia senso.
Quindi ora sto pensando a cosa fare con la barra di avanzamento poiché verranno eseguite più fasi contemporaneamente. Al momento, l'unica cosa logica che riesco a pensare è
Report 1. Start phase 1. New thread -> Phase 2 and 3
Check to see if Report 2 is last report. It isn't, so, during Report 2 phase 2, start Report 2 phase 1. New thread -> Phase 2 and 3
Check to see if Report 3 is last report. It is. So, during report 2 phase 2, start Report 3 phase 1, then continue on the same thread with phase 2 and 3
Quanto sopra significherà che aggiorno la finestra di dialogo di avanzamento durante le fasi 2 e 3 dell'ultimo rapporto (e suppongo di dover aggiungere alcuni controlli per garantire che le altre fasi siano effettivamente finite).
Non riesco a immaginare di fare qualcosa di nuovo o diverso da ciò che è stato prima e, in quanto tale, mi chiedevo se esiste già un modello per affrontare il tipo di situazione?