ReaderWriterLockSlim i async czekają

Mam z tym problemyReaderWriterLockSlim. Nie mogę zrozumieć, jak działa magia.

Mój kod:

 private async Task LoadIndex()
    {
        if (!File.Exists(FileName + ".index.txt"))
        {
            return;
        }
        _indexLock.EnterWriteLock();// <1>
        _index.Clear();
        using (TextReader index = File.OpenText(FileName + ".index.txt"))
        {
            string s;
            while (null != (s = await index.ReadLineAsync()))
            {
                var ss = s.Split(':');
                _index.Add(ss[0], Convert.ToInt64(ss[1]));
            }
        }
        _indexLock.ExitWriteLock();<2>
    }

Kiedy wchodzę w blokadę zapisu w <1>, w debuggerze to widzę_indexLock.IsWriteLockHeld jesttrue, ale kiedy wykonuję kroki do <2> widzę_indexLock.IsWriteLockHeld jestfalse i_indexLock.ExitWriteLock zgłasza wyjątekSynchronizationLockException z komunikatem „Blokada zapisu jest zwalniana bez wstrzymania”. Co robię źle?

questionAnswers(2)

yourAnswerToTheQuestion