private void SetDifference() { if (m_options.resultsOptions.HighlightDifference) { if (_thread != null && _thread.ThreadState == System.Threading.ThreadState.Running) { HighlightCompleteEvent -= new HighlightCompleteDelegate(HighlightCompleteEventHandler); _highlightStop = true; _thread.Join(); } HighlightCompleteEvent += new HighlightCompleteDelegate(HighlightCompleteEventHandler); _highlightStop = false; ComparableBitmap[] bitmap1 = m_firstImagePreviewPanel.GetImageFragments(); ComparableBitmap[] bitmap2 = m_secondImagePreviewPanel.GetImageFragments(); _thread = new Thread( unused => CalculateRectanglesOfDifferences(bitmap1, bitmap2)); _thread.Name = "Calculate rectangles of differences"; _thread.Start(); } else { m_firstImagePreviewPanel.ClearDifference(); m_secondImagePreviewPanel.ClearDifference(); } }
private void HighlightCompleteEventHandler(List <Rectangle> rectangles) { if (InvokeRequired) // Проверяем в этом ли потоке нахождится созданый обьект { object[] eventArgs = { rectangles }; Invoke(new HighlightCompleteDelegate(HighlightCompleteEventHandler), eventArgs); return; } if (rectangles != null && rectangles.Count > 0) { m_firstImagePreviewPanel.SetDifference(rectangles); m_secondImagePreviewPanel.SetDifference(rectangles); } HighlightCompleteEvent -= new HighlightCompleteDelegate(HighlightCompleteEventHandler); }