public static void InvokeIfRequired <T>(this T obj, InvokeIfRequiredDelegate <T> action) where T : ISynchronizeInvoke { if (obj.InvokeRequired) { obj.Invoke(action, new object[] { obj }); } else { action(obj); } }
/// <summary> /// An Extension method to execute the given action in Thread Safe Mode /// </summary> /// <param name="control">The control to be used for Invoking Method</param> /// <param name="action">The action to execute</param> /// <typeparam name="T"></typeparam> public static void InvokeIfRequired <T>(this T control, InvokeIfRequiredDelegate <T> action) where T : ISynchronizeInvoke { if (control.InvokeRequired) { control.Invoke(action, new object[] { control }); } else { action(control); } }