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

    [VB.NET] Impossibile rimuovere periferica dopo copia file

    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:
    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
    Potete aiutarmi?
    Grazie ein anticipo.

  2. #2
    Io la penna spesso non riesco a disattivarla anche facendo un copia e incolla manuale.

  3. #3
    HE HE HE!
    Purtroppo capita anche questo...

    Comunque, facendo delle prove, ho visto che la penna non si disattiva nemmeno dopo un po' di tempo.
    Devo procedere con un nuovo caricamento per poterla disattivare...

    ..nel caso servisse a capire il problema...

  4. #4
    Anch'io avevo notato che non si disattiva nemmeno dopo un pò di tempo, anche ore xD Ma lo fa anche con l'hard disk esterno... a volte invece la prima volta non va e la seconda sì, ma non è un fatto di tempo, anche se aspetto dieci minuti, lo stesso la prima volta non va, il mio pensiero è che ci sia qualche virus che continua ad accedere alle periferiche forse.
    Un nuovo caricamento di cosa?

  5. #5
    Lasciamo stare i problemi di windows...

    Qui si parla di problemi della mia programmazione, che evidentemente lascia aperto un processo per cui poi non riesco a rimuovere la penna finchè, sempre tramite software, non carico un altro file...

  6. #6

  7. #7
    Grazie e mille per la dritta. Gli articoli che mi hai indicato sono molto interessanti, ma non mi dicono come rilevare se un processo è ancora attivo sulla chiavetta e come interromperlo.

    Sicuramente il processo attivo è la copia perchè sul file sulla chiavetta non compio altra operazione (il recupero informazioni e le altre modifiche le faccio sul file temporaneo), ma non so come interromperlo! :S

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.