我有一些问题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.IsWriteLockHeld是true,但是当执行步骤<2>我看_indexLock.IsWriteLockHeld是false
和_indexLock.ExitWriteLock抛出异常SynchronizationLockException处理消息"写锁定而不被保持被释放".我做错了什么?
有一个关于 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)
反而。?