c# invalidate vs refresh