Directory.Delete: quando finisce il processo?? (C#)

lunedì 28 agosto 2006 - 14.07

astroman Profilo | Junior Member

Domanda curiosa...
Ho un applicativo windows.form dove, ad una determinata azione, inizio a eliminare una cartella con molti file e cartelle al suo interno: dato che ci mette molto tempo, poichè la grandezza minima è di 70Mb, ho fatto in modo tale che venga visualizzato un form d'attesa ma...poichè ho una progress bar ho bisogno di loppare ogni 100ms, con thread.sleep(100), e fare il refresh della progress bar.

Il problema è chiaro: Directory.Delete non torna un booleano e non posso loppare al suo interno per sapere quando ha finito...come si può aggirare il problema?

Idee in merito?

astroman Profilo | Junior Member

E si, l'idea mia era quella ma...ehm...come creo un thread separato???

cioè...devo essere sincero non ne ho la minima idea...

blood Profilo | Senior Member

potresti scorrerti i file ad uno ad uno (delle subdirectory) ed in base al totale ti ci carichi la Progress Bar...(che poi dividerà per fare le tacchette)
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

astroman Profilo | Junior Member

E' una soluzione inaccettabile: ho mediamente centinaia di file e sottocartelle e la grandezza può andare da 50Mb a 1Gb...indi non mi pare tanto il caso no?

Io ho guardato un pò ieri...e ho visto il FileSystemWatcher...ma sto ancora realizzando come potrei usarlo...voi che ne dite?

astroman Profilo | Junior Member

E neanche io...solo che devo ragionarci un pò su...sembrerebbe interessante però, anche se non so come e quando farlo partire e vorrei utilizzarlo non su un evento bensì ad un determinato mio comando...

blood Profilo | Senior Member

ma altrimenti fallo solo in base al numero totale delle cartelle...cosicchè ad ogni eliminazione di una cartella avanza la progress bar di uno...se è una sola directory da 2000 file da 20 mb ti arrangi
perchè altrimenti come potrai mai sapere quanto tempo manca ?? senno' fai una progress bar che da 2 tacchette passi subito alla fine (1 sec prima che finisce) ed è alquanto squallido... (come win che passa da 25 a 2 min in un baleno :°D)
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

astroman Profilo | Junior Member

Veramente ho delle sotto cartelle che vanno, come ho detto in precedenza, da 50 Mb a 1Gb..

blood Profilo | Senior Member

>Veramente ho delle sotto cartelle che vanno, come ho detto in
>precedenza, da 50 Mb a 1Gb..

ho capito ma recuperando solo le directory figlie a quella che devi eliminare non è lento...posso capire se scorri tutti i files allora si,ma almeno prova e poi mi dici no??

ps. ho appena fatto la prova a farmi un GetDirectories.Length() su C:\ ...totale 24 directory di cui WINDOWS da 2 GB, vmware da 3 GB...tempo trascorso?? 1 ms...
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

astroman Profilo | Junior Member

Si ho capito io...ma quando lanci il comando Durectory.Delete?

Cioè mi spiego...se tu fai un loop sulle sottodirectory della cartella principale e all'interno lanci il comando per l'eliminazione di tutte le sotto dir, lui parte e si ferma nel momento in cui chiami il comando Directory.Delete e riparte solo dopo che ha cancellato tutto...te come avevi pensato ad ovviare a questo problema?

blood Profilo | Senior Member

conto il totale prima della cancellazione...e nel mentre della cancellazione ogni tot controllavo a quante stava, aggiornando cosi la progress bar
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

astroman Profilo | Junior Member

Non ho mica capito quello che mi stai dicendo...hai un esempio sottomano per caso?

blood Profilo | Senior Member

>Non ho mica capito quello che mi stai dicendo...hai un esempio
>sottomano per caso?
no, purtroppo stavo solo provando a tirare giu qualche idea malsana...comunque ora mi ci metto e vediamo cosa riesco a tirarne fuori
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

blood Profilo | Senior Member

Ti passo uno schizzo di una funzione fatta al volo al pulsante di una form....funziona tutto correttamente, poi vedi te se serve qualcos'altro te la adatti fai con comodo

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ps. ah mi spiace che è in vb.net poichè io scrivo in vb.net ...ma non penso sia un problema portartelo in C# no?

---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

blood Profilo | Senior Member

è o non è una soluzione che funziona? sono curioso di sapere...visto che mi accusavi senza provare
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

astroman Profilo | Junior Member

Ah no scusa...ho sorvolato il problema e son passato ad altro...sai com'è...con il lavoro non ci si può fermare!

Appena ho tempo provo

blood Profilo | Senior Member

ah...capisco...comunque facci sapere perchè sono curioso!
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5