我有一个聊天连接类,一旦与Connect
方法连接,就可以使用SendMessage
方法发送消息。用户完成后,他们会拨打Disconnect
。
我想要一个锁,允许无限数量的SendMessage
操作获取锁定,但只允许Connect
/ Disconnect
操作一旦拥有独占锁定就开始其他SendMessage
/ Connect
/ Disconnect
操作已退出并释放锁定。
通过这种类型的锁定,我可以确保SendMessage
可以安全访问内部Socket
,SocketReader
和SocketWriter
类,并且可以肯定它们都不会是通过并行Disconnect
电话处理。
它还有排队所有Connect
/ Disconnect
的好处,显然无法同时运行。
.NET框架中是否存在这样的锁?
答案 0 :(得分:3)
听起来你想在.Net 4中使用ReaderWriterLock
或更好ReaderWriterLockSlim
。要使用SendMessage,您将获得一个读卡器锁,但需要调用Connect
或Disconnect
作家锁。
答案 1 :(得分:1)
看来你正在寻找ReaderWriterLockSlim
。