2009-05-18 36 views
25

Tengo un conjunto de informes nocturnos.El proceso no puede acceder al archivo porque lo está utilizando otro proceso

veces tengo la excepción:

El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso

¿Cómo le digo qué proceso está llevando a cabo en el archivo? Estoy pensando que es McAfee, pero necesito demostrarlo.

+2

Es sólo una idea, no es probable que la protección contra virus. Nunca lo ha sido en mi experiencia. De hecho, generalmente es mi código. Asegúrate de tener "usar" en cualquier lugar donde abras un archivo. –

+0

Esa otra publicación en Stack Overflow es un bloqueo en un dll. Este es un bloqueo de archivo en un archivo de texto. Tengo una declaración de uso. –

+0

Verificaría los derechos de acceso a la carpeta para cualquier principal que esté utilizando para su proceso. Es posible que no tenga los derechos para moverlo, solo lea el acceso solo. –

Respuesta

19

El problema era que MailMessage en .NET estaba reteniendo los archivos adjuntos. Tuve que deshacerme del archivo adjunto y luego funcionó.

0

Filemon puede ser la herramienta que está buscando.

(o incluso Process Monitor que aparentemente ha reemplazado FileMon.)

+0

Estoy tratando de cambiar el nombre de un archivo en C#, simplemente uso file.move (fuente, destino) pero cada vez que lo intento obtengo un error, el archivo es utilizado por otro proceso. estoy renombrando una interfaz web a través de asp.net, iis6. gracias – safi

1

aquí alguna herramienta (s) que habla y desbloquear archivos bloqueados: http://ccollomb.free.fr/unlocker/

+1

¿De cualquier forma puedo hacerlo programáticamente en C#? –

+0

encontró esta pregunta duplicada aquí: http://stackoverflow.com/questions/317071/how-do-i-find-out-which-process-is-locking-a-file-c – Kamarey

+1

Esa otra publicación en Stack Overflow es un bloqueo en un dll. Este es un bloqueo de archivo en un archivo de texto. –

9

uso de una herramienta como Process Explorer o Process Monitor.

+0

Estoy tratando de cambiar el nombre de un archivo en C#, simplemente uso file.move (fuente, destino) pero cada vez que intento un error, el archivo es utilizado por otro proceso. estoy renombrando una interfaz web a través de asp.net, iis6. gracias – safi

+0

@safi Debes hacer de esto una nueva pregunta. Puedes comentar un enlace a él ... –

+0

He hecho esta pregunta pero no recibí una respuesta adecuada. el enlace es http://stackoverflow.com/questions/5152841/file-renaming-problem – safi

0
  1. Process Explorer> Buscar> Buscar Handle> escriba su nombre de archivo.
  2. Unlocker. Intente abrirlo, si el tiene un bloqueo, se abrirá el desbloqueo y le mostrará los programas que lo bloquean.
+0

Estoy tratando de cambiar el nombre de un archivo en C#, simplemente uso file.move (fuente, destino) pero cada vez que lo intento obtengo un error el archivo es utilizado por otro proceso. estoy renombrando una interfaz web a través de asp.net, iis6. gracias – safi

1

Confirmado. Tuve un problema similar e hice lo que dijo Greg.

En finally bloque después de enviar el mensaje, acabo de poner esto en allí, y puesto en libertad el archivo se encarga de:

foreach(Attachment a in message.Attachments) a.Dispose(); 
+0

@Mike Estoy tratando de cambiar el nombre de un archivo en C#, simplemente uso file.move (fuente, destino) pero cada vez que lo intento obtengo un error, el archivo es utilizado por otro proceso. estoy renombrando una interfaz web a través de asp.net, iis6. gracias – safi

3
Attachment data = new Attachment(@"c:\filename"); 

'send email.... 

data.Dispose();  
0

GC.Collect() después de que el disponer debe fijarlo

+0

esto funciona en mi caso ya que los descartes no están sucediendo lo suficientemente rápido o estrictamente. simplemente se siente mal de hacer Tiene que haber una mejor manera. – Steve

0

Estaba intentando iniciar un programa Java y recibí el mensaje. Al mirar en el Administrador de tareas, ya había una tarea Java ejecutándose (¿en bucle?) Cuando maté ese proceso, mi proceso pudo ejecutarse.

0

Acabo de tener el mismo problema, pero en mi caso estaba tratando de eliminar un archivo .mdf en Visul Studio 2012. No había mucha información sobre el error para ayudarme a resolver esto, así que vine aquí en busca de ayuda. Luego me di cuenta de que, aunque era un problema similar, era un proceso bastante diferente con el que tenía que lidiar.

Lo que hice fue tratar de eliminar el archivo .mdf en el explorador de Windows y luego me dio un error que SQL Server 2008 R2 de hecho estaba aferrado al archivo aunque me borraron la base de datos. Una vez que estoy nuevo, todo lo que tuve que hacer fue apagar SQL Server 2008 R2 e intenté eliminar el archivo nuevamente y funcionó.

Si necesita instrucciones sobre cómo activar y desactivar SQL Server 2008 R2, consulte el siguiente enlace.

Turn on and off SQL Server

Cuestiones relacionadas