2012-01-03 18 views
8

estoy recibiendoproceso no puede acceder al archivo "MyFile.log" porque está siendo utilizado por otro proceso

El proceso no puede tener acceso al archivo "MyFile.log" porque está siendo utilizado por otro proceso.

mientras yo estoy haciendo esto

File.SetAttributes(filename,FileAttributes.Normal) 

using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) 
{ 
    // Do stuff with log4net log 
} 

He leído otros mensajes, pero todos ellos sugieren lo que ya estoy haciendo. ¿Cualquier otra sugerencia?

Gracias.

+0

Tal vez Visual Studio está bloqueando el archivo. Intente reiniciarlo. –

Respuesta

33

intenta configurar log4net con un bloqueo mínimo:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    ... 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    ... 
</appender> 

have a look here for better explanation.

Alternativamente, intente abrir el archivo de registro con:

 using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite)) 
    {... 
} 

o detectar este proyecto: Tailf En en cualquier caso, elimine la parte SetAttributes() que no podría funcionar. Tailf Descripción del proyecto Tailf es una implementación C# del comando tail -f disponible en sistemas unix/linux. De forma diferente a otros puertos, no bloquea el archivo de ninguna manera, por lo que funciona incluso si otros renombran el archivo: , esto está especialmente diseñado para funcionar bien con el apilador de archivos rolling log4net.

+0

No se puede configurar/tocar la configuración en su lugar. Más ideas. Acerca de leer su enlace – user9969

+0

@ user231465 verifique la respuesta mejorada –

+0

No se puede descargar ahora en el trabajo, pero ¿puede leer el archivo de alguna manera? Estaba pensando en hacer una copia del archivo. Me pregunto cómo maneja el lector de registro comercial el bloqueo mmm ...... – user9969

Cuestiones relacionadas