예제 #1
0
        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,
                };
            }
        }
예제 #2
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,
                }));
            }
        }
예제 #3
0
 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,
             };
         }
     }
 }