相关疑难解决方法(0)

ReaderWriterLockSlim和async\await

我有一些问题ReaderWriterLockSlim.我无法理解它是如何运作的.

我的代码:

 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>
    }
Run Code Online (Sandbox Code Playgroud)

当我在输入写锁定<1>,在调试器我可以看到_indexLock.IsWriteLockHeldtrue,但是当执行步骤<2>我看_indexLock.IsWriteLockHeldfalse_indexLock.ExitWriteLock抛出异常SynchronizationLockException处理消息"写锁定而不被保持被释放".我做错了什么?

c# asynchronous locking

26
推荐指数
3
解决办法
8889
查看次数

标签 统计

asynchronous ×1

c# ×1

locking ×1