view MetroWpf/MetroWpf.Framework/TimedDelegates.cs @ 39:4b8b38d17d24 MetroWPF CTP v0.1

Quick tidy up for ctp 0.1 release
author adminsh@apollo
date Tue, 03 Apr 2012 15:33:18 +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;
    }
  }
}