ApplicationMode () { if (wasForcedToApplyOnTheSameThread && _initialApplicationMode == ApplicationMode.AnotherThread) { //it's usually too late to try to apply under the same read lock return ApplicationMode.SameThreadOutsideReadLock; } return _initialApplicationMode; }