Ciao a tutti!
Ho un sw che permette di caricare dei files in cartelle specifiche, rinominandoli e facendo varie altre operazioni.
Il problema è che, se i file li carico da un pendrive, dopo il caricamento non riesco a disattivare la periferica perchè un processo rimane aperto.
Ho tentato varie strade:
- sostituire il FileInfo.CopyTo con il My.Computer.FileSystem.CopyFile (anche se poi il FIleInfo lo devo utilizzare comunque per ricavare nome, dimensione e data modifica del file)
- copiare il file nella cartella temp e solo DOPO analizzarlo / modificarlo
- avviare la copia dei file con un thread separato in un form diverso dal principale (sperando che, alla fine del thread e alla chiusura del form, le risorse vengano rilasciate, ma non lo fa)
Sinceramente non ho più idee. Ho letto che il FileInfo non ha un parametro Dispose perchè il rilascio delle risorse viene fatto in automatico dal Garbage Collection.
Come faccio a forzarlo?
Non posso intervenire a livello di sistema, disattivando la rimozione sicura, perchè le penne da cui si caricano i files sono tante e i loro padroni terrorizzati se non le disattivi correttamente...
Il codice per la copia è molto semplice:
Potete aiutarmi?codice:Sub caricaPPT(ByVal ID As Integer, ByVal filePath As String) Dim fileDest As String Dim fileExt As String Dim tempFile As String = My.Computer.FileSystem.SpecialDirectories.Temp & "\" & _ My.Computer.FileSystem.GetName(filePath) 'copio il file nella cartella TEMP My.Computer.FileSystem.CopyFile(filePath, tempFile, True) 'recupero l'estensione del file Dim fileinfo As System.IO.FileSystemInfo = My.Computer.FileSystem.GetFileInfo(tempFile) fileExt = fileinfo.Extension fileDest = fileinfo.Name If ((UCase(fileExt) = ".PPT") Or (UCase(fileExt) = ".PPTX") Or _ (UCase(fileExt) = ".PPS") Or (UCase(fileExt) = ".PPSX")) Then 'operazioni sui powerpoint ...... Else 'operazioni sugli altri files ............... End If fileinfo = Nothing End Sub
Grazie ein anticipo.

Rispondi quotando

