view MetroWpf/MetroWpf.Framework/TimedDelegates.cs @ 47:376c72183392

selection
author Steven Hollidge <stevenhollidge@hotmail.com>
date Fri, 06 Apr 2012 23:09:53 +0100
parents 060f02cd4591
children
line wrap: on
line source

using System;
using System.Diagnostics;

namespace MetroWpf.Framework
{
  public class TimedDelegates
  {
    public static void ExecuteAction(
  Action action,
  out Stopwatch stopwatch)
    {
      stopwatch = new Stopwatch();
      stopwatch.Start();
      action();
      stopwatch.Stop();
    }

    public static void ExecuteAction<T>(
      Action<T> action,
      T paramIn,
      out Stopwatch stopwatch)
    {
      stopwatch = new Stopwatch();
      stopwatch.Start();
      action(paramIn);
      stopwatch.Stop();
    }

    public static T ExecuteFunc<T>(
      Func<T> func,
      out Stopwatch stopwatch)
    {
      stopwatch = new Stopwatch();
      stopwatch.Start();
      T result = func();
      stopwatch.Stop();
      return result;
    }

    public static T ExecuteFunc<T>(
      Func<T, T> func,
      T paramIn,
      out Stopwatch stopwatch)
    {
      stopwatch = new Stopwatch();
      stopwatch.Start();
      T result = func(paramIn);
      stopwatch.Stop();
      return result;
    }
  }
}