小编l0n*_*ley的帖子

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
查看次数

可空类型的文档生成

有一个关于 C# 编译器生成文档的问题。

源代码:

public class SomeClass {
    /// <summary>
    /// Do some work
    /// </summary>
    /// <returns cref="Nullable{Boolean}">
    /// Some stuff
    /// </returns>
    public bool? SomeMethod() {
       return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器为方法 SomeMethod 生成了 XML 文档片段:

<member name="...." >
 ....
  <returns cref="T:System.Nullable`1">SomeStuff</returns>
</member>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以强制它产生

<member name="...." >
 ....
  <returns cref="T:System.Nullable{System.Boolean}">SomeStuff</returns>
</member>
Run Code Online (Sandbox Code Playgroud)

反而。?

c# xml

5
推荐指数
1
解决办法
1306
查看次数

标签 统计

c# ×2

asynchronous ×1

locking ×1

xml ×1