Salve a tutti,
tramite la classe "OpenFileDialog" copio un file da una cartella di origine ad una di destinazione.
Il problema nasce quando cerco di copiare LO STESSO FILE, situato nella stessa cartella di origine, in questo caso mi viene restituito il seguente errore:
"The process cannot access the file *** because it is being used by another process"
Gli asterischi indicano il nome del file che ho selezionato. Io inserisco l'istruzione "try - catch" e il sistema mi riporta l'errore sopra citato, però poi mi permette di copiare ugualmnete il file.
Vi chiedo allora come ovviare al problema, ovvero non far comparire questo messaggio di errore che poi alla fine non blocca l'esecuzione del programma, ma è comunque fastidioso. Vi riporto sotto il codice che uso e vi ringrazio per ogni suggerimento vogliate darmi:
codice:
With OpenFileDialog
.CheckFileExists = True
.ShowReadOnly = False
.Filter = "Tutti i File|*.*|Jpeg File (*.jpg)|*.jpg|Bitmap Files (*.bmp)|*.bmp|Gif File (*.gif)|*.gif"
.FilterIndex = 2
If .ShowDialog = DialogResult.OK Then
' Estrapola ed assegna il nome del file
Dim PathImmagine As String
Dim LunghezzaTotale As Integer
Dim LunghezzaPath As Integer
LunghezzaTotale = Len(.FileName)
TaglioInizio = .FileName.LastIndexOfAny(strChar) + 1
PathImmagine = .FileName.Substring(0, TaglioInizio)
LunghezzaPath = Len(PathImmagine)
NomeImmagine = .FileName.Substring(LunghezzaPath, (LunghezzaTotale - LunghezzaPath))
Try
Dim FileOrigine As String = .FileName
Dim FileDestinazione As String = PercorsoImmagine & "/" & NomeImmagine
System.IO.File.Copy(FileOrigine, FileDestinazione, True)
Catch ex As Exception
Dim strMsg As String
strMsg = "Errore di Sistema!" & vbCrLf
strMsg += ex.Message
MsgBox(strMsg, MsgBoxStyle.OKOnly.Critical)
End Try
End If
End With