public static void ExecutePagelets(this HtmlHelper helper)
{
var context = helper.ViewContext.HttpContext;
List<Pagelet> pagelets = (List<Pagelet>)context.Items["Pagelets"];
if (pagelets == null) return;
//initialize bigpipe object
context.Response.Write(String.Format("<script> var bigpipe = new BigPipe({0});</script>", pagelets.Count));
context.Response.Flush();
Parallel.For(0, pagelets.Count, (i) =>
{
System.Diagnostics.Debug.WriteLine("Pagelet " + i + " started at " + DateTime.Now.ToLongTimeString());
var pagelet = pagelets[i];
pagelet.Execute();
lock(_locker) {
context.Response.Write(pagelet.Serialize());
context.Response.Flush();
}
System.Diagnostics.Debug.WriteLine("Pagelet " + i + " finished at " + DateTime.Now.ToLongTimeString());
});
}