/// <summary> /// Generic Enum.Parse implementation. /// </summary> /// <typeparam name="TEnum">The enumeration type to parse to.</typeparam> /// <param name="strEnumValue">String value to parse.</param> /// <param name="defaultValue">Default value when conversion fails.</param> /// <returns>The parsed result or the default provided when parsing failed.</returns> public static TEnum ToEnum<TEnum>(this string strEnumValue, TEnum defaultValue) { if (!Enum.IsDefined(typeof(TEnum), strEnumValue)) return defaultValue; return (TEnum)Enum.Parse(typeof(TEnum), strEnumValue); } /// <summary> /// Invoke passed in action synchronously on the GUI thread of this item. /// </summary> /// <param name="me">The control.</param> /// <param name="action">Action that will be performed on the GUI thread.</param> public static void InvokeOnGui(this Control me, Action action) { if (me.InvokeRequired) me.Invoke(action); else action(); } /// <summary> /// Invoke passed in action asynchronously on the GUI thread of this item. Note: If this method is called /// on the GUI thread, the action will be performed synchronously. If it is called from another thread, it /// is invoked asynchronoulsly. /// </summary> /// <param name="me">The control.</param> /// <param name="action">Action that will be performed on the GUI thread.</param> public static void BeginInvokeOnGui(this Control me, Action action) { if (me.InvokeRequired) me.BeginInvoke(action); else action(); }
转载于:https://www.cnblogs.com/zhangchenliang/archive/2013/05/25/3098400.html