Brunet.Cdc.LocalHashTable.BeginCompareSwap C# (CSharp) Метод

BeginCompareSwap() публичный Метод

public BeginCompareSwap ( MemBlock key, MemBlock new_value, MemBlock old_value, AsyncCallback cb, object state ) : IAsyncResult
key MemBlock
new_value MemBlock
old_value MemBlock
cb AsyncCallback
state object
Результат IAsyncResult
    override public IAsyncResult BeginCompareSwap(MemBlock key, MemBlock new_value,
                                                 MemBlock old_value, AsyncCallback cb,
                                                 object state) {
      MemBlock old_v = null;
      lock( _sync ) {
        old_v = _ht[key] as MemBlock;
        if ( (old_v == null) && (old_value == null)) {
          //Looks good:
          _ht[key] = new_value; 
        }
        else if( old_v.Equals(old_value) ) {
          //Use Equals method to check for equality
          _ht[key] = new_value;
        }
      }
      IAsyncResult r = new LhtAsResult(state, old_v);
      cb(r);
      return r;
    }