Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés.
Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Iniciar sesión Cerrar
Correo:
Contraseña:
Entrar
Recordar sesión en este navegador
Iniciar sesiónIniciar sesiónCrear cuentaCrear cuenta

Visual Basic.NET - El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso vb.net

  Imprimir  
Vista:
Me gusta: Está pregunta es útil y esta clara
0
No me gusta: Está pregunta no esta clara o no es útil
 
Asunto:

El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso vb.net

Autor:Mary mary.delucaleal@hotmail.com (2 intervenciones)
Fecha:31/05/2011 17:22:13
Hola...

Espero alguien me pueda ayudar...

Tengo una aplicación en visual basic.net 2008 que manda imprimir un archivo .pdf ya cuando imprime se tiene que adjuntar para ser enviado por correo electronico y asi como moverlo de carpeta, pero en el momento que quiere adjuntarlo me manda el siguiente error.

"El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso"

Gracias de antemano..

Mary
Responder
Me gusta: Está respuesta es útil y esta clara
0
No me gusta: Está respuesta no esta clara o no es útil
 
Asunto:

El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso vb.net

Autor:angala (3 intervenciones)
Fecha:31/05/2011 19:50:36
Esto me paso a mi con algo parecido, yo creaba un archivo y despues lo abria para escribir o leer en el, usa esto tras imprimir el archivo: file.close

Pero tal vez sea porque tarda en imprimirlo, pues calcula el tiempo que tardaria en imprimirlo y usa un timer para cerrar el archivo una vez impreso.
Comentar
Me gusta: Está respuesta es útil y esta clara
0
No me gusta: Está respuesta no esta clara o no es útil
 
Asunto:

El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso vb.net

Autor:Mary mary.delucaleal@hotmail.com (2 intervenciones)
Fecha:31/05/2011 20:06:07
Hola angala

mira es que tengo esto
With New Process
.StartInfo.Verb = "print"
.StartInfo.CreateNoWindow = False
.StartInfo.FileName = filename
.Start()
.WaitForExit(10000)
'.CloseMainWindow()


.Close()
End With

y aparte le daba tiempo y en la parte de adjuntar

Do
Try
miCorreo.Attachments.Add(New System.Net.Mail.Attachment(archivo))
ficheroAdjuntado = True


Catch ex As Exception
contadorEspera += 1
'esperamos (de permanencia) un rato
System.Threading.Thread.Sleep(500)
End Try
Loop Until (contadorEspera = 5 Or ficheroAdjuntado)
Comentar
Me gusta: Está respuesta es útil y esta clara
0
No me gusta: Está respuesta no esta clara o no es útil
 
Asunto:

El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso vb.net

Autor:Roberto (3 intervenciones)
Fecha:07/07/2011 23:53:17
La función que adjunta el fichero, lo deja abierto. No se porque, pero es así.
La idea general es crear el fichero en memoria y adjuntar ese fichero en memoria con el nombre que quieras.
Esta clase lo hace:


Public Class clsSendMail
Public Shared Function SendEMail(ByVal strOrigen As String, ByVal strDestinatario As String, ByVal strAsunto As String, ByVal strMsg As String, ByVal usuario As String, ByVal Clave As String, ByVal smtp As String, ByVal Adjunto As String) As Boolean
Dim msg As New MailMessage()
msg.[To].Add(New MailAddress(strDestinatario))
msg.From = New MailAddress(strOrigen)
msg.Subject = strAsunto
msg.Body = strMsg

'Adjuntar fichero. No se puede ajuntar el fichero tal cual, pues se queda bloqueado.
Dim contentAsBytes As Byte() = Encoding.UTF8.GetBytes(Adjunto)
Dim memStream As System.IO.MemoryStream = New System.IO.MemoryStream(contentAsBytes)

Dim streamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(memStream)
streamWriter.Flush()


memStream.Position = 0

Dim thisAttachment As Attachment = New Attachment(memStream, vbNull) ' "image/jpeg")
Dim F As Long
Dim FileNameAdjunto As String
F = InStrRev(Adjunto, "\")
If F = 0 Then
FileNameAdjunto = Adjunto
Else
FileNameAdjunto = Adjunto.Substring(F)
End If
thisAttachment.ContentDisposition.FileName = FileNameAdjunto

msg.Attachments.Add(thisAttachment)

'msg.Attachments.GetEnumerator()

Dim clienteSmtp As New SmtpClient(smtp)
clienteSmtp.Credentials = New NetworkCredential(usuario, Clave)

Try
clienteSmtp.Send(msg)

Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function

End Class
Comentar
Me gusta: Está respuesta es útil y esta clara
0
No me gusta: Está respuesta no esta clara o no es útil
 
Asunto:

El proceso no tiene acceso al archivo porque esta siendo utilizado por otro proceso vb.net

Autor:Roberto (3 intervenciones)
Fecha:08/07/2011 19:15:00
'estaba MAL

'Dim contentAsBytes As Byte() = Encoding.UTF8.GetBytes(Adjunto) ' Encoding.UTF8.GetBytes(Adjunto)

Esto es lo correcto:
Dim contentAsBytes As Byte() = FileIO.FileSystem.ReadAllBytes(Adjunto)

sino lo que hacemos es generar un fichero con el texto del nombre del fichero, no de su contenido.

Un terrible pequeño fallo que producia este error el cual detallo para que los buscadores lo encuentren:

Error al abrir PDF generado sin cambiar el codigo indicado:

Adobe reader no pudo abrir 'nombre fichero' debido a que no es un tipo de archivo admitido o está dañado (por ejemplo, se envió como adjunto de correo eletrónico y no se descodifica correctamente).

8 JULIO DE 2011 (San fermin 2011)
Soy de los que confunden hallowen con navidad ( OCT(31) = DEC(25) )
Comentar