public void WaitforDraw(SystemWindow containingWindow, int maxSeconds = 30) { var resetEvent = new AutoResetEvent(false); EventHandler <DrawEventArgs> afterDraw = (s, e) => resetEvent.Set(); EventHandler <ClosedEventArgs> closed = (s, e) => resetEvent.Set(); containingWindow.AfterDraw += afterDraw; containingWindow.Closed += closed; containingWindow.Invalidate(); resetEvent.WaitOne(maxSeconds * 1000); containingWindow.AfterDraw -= afterDraw; containingWindow.Closed -= closed; }