public TimedActionResult <T> PublishTimedAction <T>(Func <T> action, PerfmonCategory category, string eventName, string eventSubText = null)
        {
            var timedResult = Time(action);

            PublishMessage(new TimelineMessage {
                EventName = eventName, EventCategory = category.ToGlimpseTimelineCategoryItem(), EventSubText = eventSubText
            }.AsTimedMessage(timedResult.TimerResult));

            return(timedResult);
        }
 public TimedActionResult <T> PublishTimedAction <T, TMessage>(Func <T> action, Func <T, TimerResult, TMessage> messageFactory, PerfmonCategory category, Func <T, string> eventNameFactory, Func <T, string> eventSubTextFactory = null)
 {
     return(Time(action));
 }
 public TimedActionResult <T> PublishTimedAction <T>(Func <T> action, PerfmonCategory category, string eventName, string eventSubText = null)
 {
     return(Time(action));
 }
 public TimerResult PublishTimedAction <T>(Action action, Func <T> messageFactory, PerfmonCategory category, string eventName, string eventSubText = null)
 {
     return(Time(action));
 }
 public TimerResult PublishTimedAction(Action action, PerfmonCategory category, string eventName, string eventSubText = null)
 {
     return(Time(action));
 }
        public TimedActionResult <T> PublishTimedAction <T, TMessage>(Func <T> action, Func <T, TimerResult, TMessage> messageFactory, PerfmonCategory category, string eventName, string eventSubText = null)
        {
            var actionResult = PublishTimedAction(action, category, eventName, eventSubText);

            PublishMessage(messageFactory(actionResult.ActionResult, actionResult.TimerResult));

            return(actionResult);
        }
        public TimerResult PublishTimedAction <T>(Action action, Func <TimerResult, T> messageFactory, PerfmonCategory category, string eventName, string eventSubText = null)
        {
            var timedResult = PublishTimedAction(action, category, eventName, eventSubText);

            PublishMessage(messageFactory(timedResult));

            return(timedResult);
        }
 public static TimelineCategoryItem ToGlimpseTimelineCategoryItem(this PerfmonCategory category)
 {
     return(new TimelineCategoryItem(category.CategoryName, category.PrimaryColor, category.SecondaryColor));
 }