El problema es el siguiente, hago uso de un fichero en una operación tras la cual quiero eliminarlo. La operación es asíncrona, con lo cual, hasta que no termine, el fichero permanece bloqueado y no lo puedo eliminar.
He encontrado una solución "poco elegante" y me gustaría, si alguien sabe cómo, no tener que recurrir a un try ... catch y poder comprobar si el archivo no está bloqueado y lo puedo eliminar.
Ahora lo hago así (y funciona):
y el código del hilo (el que no me gusta):Código:'operaciones que utilizan el fichero Dim hiloBorrar As New Threading.Thread(AddressOf EliminarFichero) hiloBorrar.Start(fileList)
Código:Private Sub EliminarFichero(ByVal ficheros As Object) '' Borramos el ficheroo For Each strfile As String In ficheros Dim BORRADO As Boolean = False While Not BORRADO Try If IO.File.Exists(strfile) Then IO.File.Delete(strfile) End If BORRADO = True Catch ex As Exception 'si el archivo está bloqueado salta la excepción 'me quedo esperando un poco y vuelvo a intentarlo Threading.Thread.Sleep(100) End Try End While Next End Sub