Desbloquear archivo

19/03/2007 - 08:35 por Cdiaza | Informe spam
Saludos!

Tengo una pequeña aplicación que tiene una función que crea un log y
un archivo de audio wav, en el momento que crea cada uno de esos
archivos llamo a una función que envía por email esos archivos que se
han creado, tanto el log de tipo txt como el archivo de audio tipo
wav. El problema que tengo es que cuando hago el envío de correo con
esos archivos (log y audio) como datos adjuntos, estos archivos se me
quedan bloqueados, y no puedo moverlos ni borrarlos. Sólo cuando paro
la aplicación puedo mover o borrar los archivos, pero no me interesa
parar la aplicación, puesto que es un servicio que no se debe parar.

Ahora la pregunta es:¿Existe alguna manear de desbloquear estos
archivos sin tener que parar la aplicación?¿Cómo?

Muchas gracias por adelantado

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
19/03/2007 - 09:28 | Informe spam
"Cdiaza" wrote in message
news:
Tengo una pequeña aplicación que tiene una función que crea un log y
un archivo de audio wav, en el momento que crea cada uno de esos
archivos llamo a una función que envía por email esos archivos que se
han creado, tanto el log de tipo txt como el archivo de audio tipo
wav. El problema que tengo es que cuando hago el envío de correo con
esos archivos (log y audio) como datos adjuntos, estos archivos se me
quedan bloqueados, y no puedo moverlos ni borrarlos. Sólo cuando paro
la aplicación puedo mover o borrar los archivos [...]
Ahora la pregunta es:¿Existe alguna manear de desbloquear estos
archivos sin tener que parar la aplicación?¿Cómo?



Normalmente cuando te ocurre eso es porque los archivos se te han
quedado abiertos. Tendrías que revisar la forma en que los creas, a ver si
se te escapa el Close() en algún sitio.

Si los archivos los estás creando únicamente para mandarlos como
adjuntos por correo, y estás usando System.Net.Mail para enviar los correos,
hay una alternativa mejor: en lugar de usar un FileStream para enviarlos a
un archivo en disco, usa un MemoryStream para crearlos en memoria. Cuando
acabes, ponle .Position=0 al Stream, y crea el Attachment con la sobrecarga
del constructor que recibe un Stream en lugar de un archivo. De esta forma
no tienes que preocuparte de borrar los archivos del disco.
Respuesta Responder a este mensaje
#2 Cdiaza
19/03/2007 - 09:53 | Informe spam
On 19 mar, 09:28, "Alberto Poblacion" <earthling-
wrote:
"Cdiaza" wrote in message

news:

> Tengo una pequeña aplicación que tiene una función que crea un log y
> un archivo de audio wav, en el momento que crea cada uno de esos
> archivos llamo a una función que envía por email esos archivos que se
> han creado, tanto el log de tipo txt como el archivo de audio tipo
> wav. El problema que tengo es que cuando hago el envío de correo con
> esos archivos (log y audio) como datos adjuntos, estos archivos se me
> quedan bloqueados, y no puedo moverlos ni borrarlos. Sólo cuando paro
> la aplicación puedo mover o borrar los archivos [...]
> Ahora la pregunta es:¿Existe alguna manear de desbloquear estos
> archivos sin tener que parar la aplicación?¿Cómo?

Normalmente cuando te ocurre eso es porque los archivos se te han
quedado abiertos. Tendrías que revisar la forma en que los creas, a ver si
se te escapa el Close() en algún sitio.

Si los archivos los estás creando únicamente para mandarlos como
adjuntos por correo, y estás usando System.Net.Mail para enviar los correos,
hay una alternativa mejor: en lugar de usar un FileStream para enviarlos a
un archivo en disco, usa un MemoryStream para crearlos en memoria. Cuando
acabes, ponle .Position=0 al Stream, y crea el Attachment con la sobrecarga
del constructor que recibe un Stream en lugar de un archivo. De esta forma
no tienes que preocuparte de borrar los archivos del disco.



Hola, gracias por la rapidez.

Necesito tener una copia del archivo en disco, entonces tendré que
seguir usando FileStream no?. He comprobado y el archivo se cierra
correctamente, lo que veo es que al añadirlo en el attach del correo
es cuando queda bloqueado el archivo. Hay alguna manear de matar el
objeto o lo que esté bloqueando el archivo?

Gracias
Respuesta Responder a este mensaje
#3 Alberto Poblacion
19/03/2007 - 10:28 | Informe spam
"Cdiaza" wrote in message
news:
Necesito tener una copia del archivo en disco, entonces tendré que
seguir usando FileStream no?. He comprobado y el archivo se cierra
correctamente, lo que veo es que al añadirlo en el attach del correo
es cuando queda bloqueado el archivo. Hay alguna manear de matar el
objeto o lo que esté bloqueando el archivo?



La única explicación que se me ocurre es que sea el objeto MailMessage, o
el objeto Attachment, el que deja abierto el archivo del adjunto. ¿Has
probado a llamar al método Dispose de estos dos objetos (después de terminar
de usarlos), a ver si así liberan el archivo?
Respuesta Responder a este mensaje
#4 Cdiaza
19/03/2007 - 10:44 | Informe spam
On 19 mar, 10:28, "Alberto Poblacion" <earthling-
wrote:
"Cdiaza" wrote in message

news:

> Necesito tener una copia del archivo en disco, entonces tendré que
> seguir usando FileStream no?. He comprobado y el archivo se cierra
> correctamente, lo que veo es que al añadirlo en el attach del correo
> es cuando queda bloqueado el archivo. Hay alguna manear de matar el
> objeto o lo que esté bloqueando el archivo?

La única explicación que se me ocurre es que sea el objeto MailMessage, o
el objeto Attachment, el que deja abierto el archivo del adjunto. ¿Has
probado a llamar al método Dispose de estos dos objetos (después de terminar
de usarlos), a ver si así liberan el archivo?



No se me había ocurrido! Muchas gracias, probaré a ver que tal y te
comento.
Respuesta Responder a este mensaje
#5 Cdiaza
19/03/2007 - 12:39 | Informe spam
On 19 mar, 10:44, "Cdiaza" wrote:
On 19 mar, 10:28, "Alberto Poblacion" <earthling-

wrote:
> "Cdiaza" wrote in message

>news:

> > Necesito tener una copia del archivo en disco, entonces tendré que
> > seguir usando FileStream no?. He comprobado y el archivo se cierra
> > correctamente, lo que veo es que al añadirlo en el attach del correo
> > es cuando queda bloqueado el archivo. Hay alguna manear de matar el
> > objeto o lo que esté bloqueando el archivo?

> La única explicación que se me ocurre es que sea el objeto MailMessage, o
> el objeto Attachment, el que deja abierto el archivo del adjunto. ¿Has
> probado a llamar al método Dispose de estos dos objetos (después de terminar
> de usarlos), a ver si así liberan el archivo?

No se me había ocurrido! Muchas gracias, probaré a ver que tal y te
comento.



FUNCIONÓ!!!

GRACIAS!!!!! :)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida