private void RefreshTimer_Tick(object sender, EventArgs e) { try { RefreshTimer.Stop(); if (Visible && Proxy != null) { DateTime start = DateTime.Now; this.PreviewBox.Image = Proxy.AcquireImage(); DateTime end = DateTime.Now; double acqTime = (end - start).TotalMilliseconds; // take a little room acqTime *= 1.2; if (acqTime > InitialRefreshTime || acqTime * 2 < InitialRefreshTime) { InitialRefreshTime = (int)Math.Ceiling(acqTime); } } } catch { } finally { RefreshTimer.Start(); } }