private void TryGetRenderProgress(object state) { if (EnumerateOpenedWindows.IsWindowVisible(this.progressLabelHwnd)) { string changedText = null; lock (this.sync) { var text = EnumerateOpenedWindows.GetWindowText(this.progressLabelHwnd); if (!string.Equals(this.progressText, text)) { this.progressText = text; changedText = text; } } if (changedText != null) { ProgressChanged?.Invoke(this, changedText); } } else { this.getRenderProgressTimer?.Dispose(); this.getRenderProgressTimer = null; StartWaitForRenderTimer(); this.progressText = string.Empty; ProgressChanged?.Invoke(this, this.progressText); } }
private void TryGetRenderProgress(object state) { if (!this.vrayMutex.WaitOne(TimeSpan.FromMilliseconds(100))) { return; } try { if (EnumerateOpenedWindows.IsWindowVisible(this.progressLabelHwnd)) { string changedText = null; lock (this.sync) { var text = EnumerateOpenedWindows.GetWindowText(this.progressLabelHwnd); if (!string.Equals(this.progressText, text)) { this.progressText = text; changedText = text; } } if (changedText != null) { ProgressChanged?.Invoke(this, changedText); } } else { this.getRenderProgressTimer?.Dispose(); this.getRenderProgressTimer = null; StartWaitForRenderTimer(); this.progressText = string.Empty; ProgressChanged?.Invoke(this, this.progressText); } } catch (Exception exc) { Trace.TraceError(exc.Message); } finally { this.vrayMutex.ReleaseMutex(); } }