public TfsDashboardSummary[] Get()
        {
            TfsDashboardSummary[] result;
            if (TryGetCache(out result))
            {
                return(result);
            }

            lock (_lock)
            {
                if (TryGetCache(out result))
                {
                    return(result);
                }

                var watch = Stopwatch.StartNew();

                var settings = TfsDashboardSettingsLoader.Load().ToArray();

                result = new TfsDashboardSummary[settings.Length];

                Parallel.ForEach(settings, (setting, state, idx) =>
                {
                    var manager  = new TfsManager(setting);
                    var summary  = manager.CreateSummary();
                    summary.Name = setting.Name;
                    result[idx]  = summary;
                });

                _cache = new Tuple <DateTime, TfsDashboardSummary[]>(DateTime.Now, result);
                Trace.WriteLine("TfsDashboardSummary Get: " + watch.Elapsed);
                return(result);
            }
        }
 public ActionResult Index(string username)
 {
     if (string.IsNullOrWhiteSpace(username))
     {
         return(null);
     }
     try
     {
         var settings = TfsDashboardSettingsLoader.Load();
         var manager  = new TfsManager(settings.First());
         var img      = manager.GetImage(username);
         return(File(img, "image"));
     }
     catch
     {
         return(HttpNotFound());
     }
 }