Leer y escribir en un archivo al mismo tiempo

para una aplicación que utiliza un archivo como una especie de almacenamiento global para reservas de dispositivos en una empresa, necesito una forma de leer y escribir en un archivo (o bloquear un archivo, leerlo, escribirlo y desbloquearlo). Un pequeño fragmento de código disparará lo que quiero decir:

FileStream in = new FileStream("storage.bin", FileMode.Open);
//read the file
in.Close();

//!!!!!
//here is the critical section since between reading and writing, there shouldnt
//be a way for another process to access and lock the file, but there is the chance
//because the in stream is closed
//!!!!!
FileStream out = new FileStream("storage.bin", FileMode.Create);
//write data to file
out.Close();

esto debería obtener algo como esto

LockFile("storage.bin");
//read from it...
//OVERwrite it....
UnlockFile("storage.bin");

El método debe ser absolutamente seguro, ya que el programa debe ejecutarse en 2000 dispositivos al mismo tiempo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta