/// <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();
}