Con este código para un registrador muy básico:¿Por qué el bloqueo de este código no funciona?
lock (string.Concat("LogWritter_", this.FileName))
{
using (var fileStream = File.Open(this.FileName, FileMode.Append, FileAccess.Write, FileShare.Read))
{
using (var w = new StreamWriter(fileStream))
{
w.Write(message);
}
}
}
cuando lo intento desde unos pocos hilos simultáneamente rápidamente me sale el error:
The process can't access the file because its being used by another file.
Por qué el bloqueo no impide que los hilos de Acceso el archivo al mismo tiempo?
No importa si los hilos llaman a la misma instancia o instancias diferentes al mismo archivo. También pensé que podría ser debido a un aplazamiento al escribir archivos en Windows, pero en Linux sucede lo mismo.
hash code! = Referencia. Use 'ReferenceEquals'. –
hash code! = Reference – TheBuzzSaw
El código hash es un resumen del * contenido * de la cadena. La referencia contiene los detalles con respecto a esa instancia particular. El compilador tiene opciones para combinar automáticamente cadenas codificadas con contenido idéntico, pero el tiempo de ejecución no hace toneladas de retrocomparaciones solo para combinar algunas cadenas. – TheBuzzSaw