public void Add(OperationResultDto operationResult) { InitOnece(); if (operationResult == null) { return; } var data = OperationResultData.Create(operationResult); List <OperationResultData> toRemoves = new List <OperationResultData>(); lock (_list) { // 新的在队尾,旧的在队头 _list.Add(data); while (_list.Count > _capacityCount) { toRemoves.Add(_list[0]); _list.RemoveAt(0); } } using (var db = VirtualRoot.CreateLocalDb()) { var col = db.GetCollection <OperationResultData>(); foreach (var item in toRemoves) { col.Delete(item.Id); } col.Insert(data); } VirtualRoot.DaemonWsClient.SendAsync(new WsMessage(Guid.NewGuid(), WsMessage.OperationReceived)); }
protected override void Init() { using (var db = VirtualRoot.CreateLocalDb()) { var col = db.GetCollection <OperationResultData>(); foreach (var item in col.FindAll().OrderBy(a => a.Timestamp)) { _list.Add(item); } } }
private void Init() { lock (_locker) { if (!_isInited) { using (var db = VirtualRoot.CreateLocalDb()) { var col = db.GetCollection <OperationResultData>(); foreach (var item in col.FindAll().OrderBy(a => a.Timestamp)) { _list.Add(item); } } _isInited = true; } } }
public OperationResultSet() { VirtualRoot.BuildEventPath <Per24HourEvent>("检查一下记录的操作记录是否多于容量,如果多了清理一下", LogEnum.DevConsole, this.GetType(), PathPriority.Normal, path: message => { using (var db = VirtualRoot.CreateLocalDb()) { var col = db.GetCollection <OperationResultData>(); int count = col.Count(); if (count <= _capacityCount) { return; } var all = col.FindAll().OrderBy(a => a.Timestamp).ToList(); int toDeleteCount = all.Count - _capacityCount; if (toDeleteCount <= 0) { return; } for (int i = 0; i < toDeleteCount; i++) { col.Delete(all[i].Id); } } }); }