Odczyt i zapis do pliku w tym samym czasie

w przypadku aplikacji, która używa pliku jako pewnego rodzaju globalnej pamięci masowej do rezerwacji urządzeń w firmie, potrzebuję sposobu na odczyt i zapis do pliku (lub zablokowanie pliku, odczytanie go, zapisanie go i odblokowanie). Mały fragment kodu nakręci to, co mam na myśli:

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();

to powinno mieć coś takiego

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

metoda powinna być absolutnie bezpieczna, ponieważ program powinien działać jednocześnie na 2000 urządzeniach

questionAnswers(5)

yourAnswerToTheQuestion