override public IAsyncResult BeginSwap(MemBlock key, MemBlock new_value, AsyncCallback cb, object state) { MemBlock old_v = null; lock( _sync ) { old_v = _ht[key] as MemBlock; _ht[key] = new_value; } IAsyncResult r = new LhtAsResult(state, old_v); cb(r); return r; } /** return a new random key