private void HandleComparisonFinished( object sender, ComparisonFinishedEventArgs e) { if (e.ComparisonResult != ComparisonResult.Cancelled) { return; } lock (StatusLock) { if (Status.VideoCompareResult != null) { return; } var last = ImageComparisons.LastOrDefault()?.Item2; Status.VideoCompareResult = new VideoComparisonResult { Reason = "Comparison cancelled", ComparisonResult = ComparisonResult.Cancelled, LastComparisonIndex = last != null ? last.ImageLoadLevel : 0, }; } }
private void HandleImageCompared( object sender, ImageComparedEventArgs e) { lock (StatusLock) { if (e.VideoComparisonResult != ComparisonResult.NoResult && Status.VideoCompareResult == null) { Status.VideoCompareResult = new VideoComparisonResult { Reason = "Comparison ran to completion", ComparisonResult = e.VideoComparisonResult, LastComparisonIndex = e.ImageComparisonIndex, }; } Status.Token = Token; ImageComparisons.Add(Tuple.Create( e.ImageComparisonIndex, new ImageComparisonResult { ComparisonResult = e.ImageComparisonResult, Difference = e.Difference, ImageLoadLevel = e.ImageLoadLevel, LeftImage = e.LeftImage, RightImage = e.RightImage, })); } }
private void Compare() { try { _ = Comparer.Compare(CancelTokenSource.Token); } catch (Exception exc) { lock (StatusLock) { var last = ImageComparisons.LastOrDefault(); Status.VideoCompareResult = new VideoComparisonResult { Reason = exc.Message, ComparisonResult = ComparisonResult.Aborted, LastComparisonIndex = last != null ? last.Item1 : 0, }; } } }