private Task FlushAsync() { _InnerCommitable.Clear(); _Commitable.Commit(); _Commitable.Clear(); var t = Task.Run(() => { _InnerCommitable.Commit(); _LastFlush = DateTimeOffset.UtcNow; }); _Commiting = t; return(t); }
public override void SaveChanges(ChainedBlock newTip, IEnumerable <uint256> txIds, IEnumerable <Coins> coins) { _Commitable.SaveChanges(newTip, txIds, coins); if ((_Commiting == null || _Commiting.IsCompleted) && (DateTimeOffset.UtcNow - _LastFlush) > FlushPeriod) { _InnerCommitable.Clear(); _Commitable.SaveChanges(); _Commitable.Clear(); _Commiting = Task.Run(() => { _InnerCommitable.SaveChanges(); _LastFlush = DateTimeOffset.UtcNow; }); } }