Perhaps you can use a ReaderWriterLock where B and C (AcquireReaderLock) can come in as readers while A (AcquireWriterLock) goes in as a writer.
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx
That's exactly what that class is meant for.