private bool disposedValue = false; // To detect redundant calls protected override void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { users.OnCompleted(); posts.OnCompleted(); comments.OnCompleted(); commentedEdges.OnCompleted(); likesEdges.OnCompleted(); postEdges.OnCompleted(); submitterEdges.OnCompleted(); friendEdges.OnCompleted(); computation.Join(); computation.Dispose(); rawUsers.Clear(); rawPosts.Clear(); rawComments.Clear(); rawCommentedEdges.Clear(); rawLikesEdges.Clear(); rawPostEdges.Clear(); rawSubmitterEdges.Clear(); rawFriendEdges.Clear(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; base.Dispose(disposing); } }
/// <summary> /// Adds a single record and signals that the <see cref="InputCollection{TRecord}"/> is complete. /// </summary> /// <param name="input">The input.</param> /// <param name="value">The record.</param> /// <typeparam name="TRecord">The type of the records.</typeparam> public static void OnCompleted <TRecord>(this InputCollection <TRecord> input, TRecord value) where TRecord : IEquatable <TRecord> { input.OnCompleted(new Weighted <TRecord>[] { new Weighted <TRecord>(value, 1) }); }
/// <summary> /// Adds several records and signals that the <see cref="InputCollection{TRecord}"/> is complete. /// </summary> /// <param name="input">The input.</param> /// <param name="values">The records.</param> /// <typeparam name="TRecord">The type of the records.</typeparam> public static void OnCompleted <TRecord>(this InputCollection <TRecord> input, IEnumerable <TRecord> values) where TRecord : IEquatable <TRecord> { input.OnCompleted(values.Select(x => new Weighted <TRecord>(x, 1))); }