view MetroWpf/MetroWpf.Framework/TimedDelegates.cs @ 89:3c67e54e3a17

Working version
author stevenhollidge <stevenhollidge@hotmail.com>
date Mon, 30 Apr 2012 10:45:32 +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;
    }
  }
}