Aber wenn man z.B. in zwei Thread ein BeginRead ausführt und daraufhin direkt ein BeginWrite, dann könnte/wird man in einen Deadlock laufen, da beide Threads auf das Ende der
Sperren des anderen Threads warten.
Das sehe ich anders! Das BeginWrite entfernt zunächst den eigenen ReadLock, bevor es auf die Freigabe der anderen ReadLocks wartet. Das erlaubt dem Thread mit dem ersten BeginRead mit seinem BeginWrite durchzukommen. Dieses CodeSite-Log zeigt, daß es funktioniert: