You can use inter process synchronization using Mutex in both applications. Make sure you release Mutex as soon as possible. You need some thing like given below in all the processes accessing file to synchronize access.
Mutex m = new Mutex(false, "MyMutex");
m.WaitOne();
//File read or writing code goes here.
m.ReleaseMutex();
Named system mutexes are visible throughout the operating system, and can be used to synchronize the activities of processes. You can create a Mutex object that represents a named system mutex by using a constructor that accepts a name, MSDN.