public CountedItem Increment() { Count += 1; if (Count == 1) { Item = Parent.AddItem(Description); } return(this); }
public IEnumerator <object> Move(string targetFilename, ActivityIndicator activities) { // Wait for any pending operations running against the tangles var cb = new BarrierCollection(true, Tangles); using (activities.AddItem("Waiting for database to be idle")) yield return(cb); foreach (var tangle in Tangles) { tangle.Dispose(); } Tangles.Clear(); var f = Future.RunInThread(() => { File.Delete(_TokenFilePath); if (File.Exists(targetFilename)) { File.Delete(targetFilename); } Storage.Folder = targetFilename; MakeTokenFile(targetFilename); _Filename = targetFilename; }); using (activities.AddItem("Moving database")) yield return(f); var failed = f.Failed; yield return(CreateTangles()); if (failed) throw f.Error; }
public IEnumerator<object> Move(string targetFilename, ActivityIndicator activities) { // Wait for any pending operations running against the tangles var cb = new BarrierCollection(true, Tangles); using (activities.AddItem("Waiting for database to be idle")) yield return cb; foreach (var tangle in Tangles) tangle.Dispose(); Tangles.Clear(); var f = Future.RunInThread(() => { File.Delete(_TokenFilePath); if (File.Exists(targetFilename)) File.Delete(targetFilename); Storage.Folder = targetFilename; MakeTokenFile(targetFilename); _Filename = targetFilename; }); using (activities.AddItem("Moving database")) yield return f; var failed = f.Failed; yield return CreateTangles(); if (failed) throw f.Error; }
protected IEnumerator <object> SnapshotIOTask() { ActivityIndicator.Item progress = null; IFuture previousSnapshot = null; while (true) { if ((SnapshotLoadQueue.Count <= 0) && (previousSnapshot != null)) { yield return(previousSnapshot); } if (SnapshotLoadQueue.Count <= 0) { SnapshotLoadState.Count = 0; if (progress != null) { progress.Dispose(); progress = null; } } var f = SnapshotLoadQueue.Dequeue(); using (f) yield return(f); var filename = f.Result; if (progress == null) { progress = Activities.AddItem("Loading snapshots"); } using (var fda = new FileDataAdapter( filename, FileMode.Open, FileAccess.Read, FileShare.Read, 1024 * 128 )) { var maximum = SnapshotLoadState.Count + Math.Max(0, SnapshotLoadQueue.Count) + 1; progress.Maximum = maximum; progress.Progress = Math.Min(maximum, SnapshotLoadState.Count); var fBytes = fda.ReadToEnd(); yield return(fBytes); var fText = Future.RunInThread( () => Encoding.ASCII.GetString(fBytes.Result) ); yield return(fText); var text = fText.Result; fBytes = null; fText = null; // Wait for the last snapshot load we triggered to finish if (previousSnapshot != null) { yield return(previousSnapshot); } previousSnapshot = Scheduler.Start( FinishLoadingSnapshot(filename, text), TaskExecutionPolicy.RunAsBackgroundTask ); text = null; } } }