public async Task SaveAsync() { var args = new SavedEventArgs(); var sw = Stopwatch.StartNew(); try { byte[] bytes; lock (SyncRoot) { bytes = _serializer.Serialize(_items); } args.TimeToSerialize = sw.Elapsed; args.SizeInBytes = bytes.Length; sw.Restart(); await _dataStore.WriteAllAsync(bytes); } catch (Exception ex) { args.Exception = ex; throw; } finally { args.TimeToSave = sw.Elapsed; OnSaved(args); } }
protected virtual void OnSaved(SavedEventArgs args) { Saved?.Invoke(this, args); }