In Global.asax, the following code starts the orderpipeline when application starts.
void Application_Start(object sender, EventArgs e) {
OrderPipelineController.Start();
}
It would load DataRefresh task defined in your web.config.
<taskConfiguration defaultProvider="">
<providers>
<add name="DataRefresh" type="DotShoppingCart.OpenSource.OrderPipeline.DataRefreshTaskProvider, DotShoppingCart.OpenSource.OrderPipeline" />
</providers>
</taskConfiguration>
DataRefresh would update your category counter every 2 hours.
protected override void RunTask(string host, IConfigurationSource cfgSrc) {
Category.UpdateProductCount(host);
}