小编Shi*_*nja的帖子

微软对ReaderWriterLockSlim.IsReadLockHeld/IsWriteLockHeld及其后果的评论

要同步对我的属性的访问,我使用ReaderWriterLockSlim类.我使用以下代码以线程安全的方式访问我的属性.

public class SomeClass
{
    public readonly ReaderWriterLockSlim SyncObj = new ReaderWriterLockSlim();  
    public string AProperty
    {
        get
        {
            if (SyncObj.IsReadLockHeld)
                return ComplexGetterMethod();
            SyncObj.EnterReadLock();
            try
            {
                return ComplexGetterMethod();
            }
            finally
            {
                SyncObj.ExitReadLock();
            }
        }
        set
        {
            if (SyncObj.IsWriteLockHeld)
                ComplexSetterMethod(value);
            else
            {
                SyncObj.EnterWriteLock();
                ComplexSetterMethod(value);
                SyncObj.ExitWriteLock();
            }
        }
    }

    // more properties here ...

    private string ComplexGetterMethod()
    {
        // This method is not thread-safe and reads
        // multiple values, calculates stuff, ect. 
    }

    private void ComplexSetterMethod(string newValue)    
    {
        // This method …
Run Code Online (Sandbox Code Playgroud)

c# readerwriterlockslim

14
推荐指数
1
解决办法
1951
查看次数

标签 统计

c# ×1

readerwriterlockslim ×1