コード例 #1
0
ファイル: BootStrapper.cs プロジェクト: mageomageos/animerecs
        private void KickOffViewPrecompiling(TinyIoCContainer container)
        {
            Logging.Log.Info("Precompiling razor views in background");
            RazorViewEngine engine = container.Resolve<RazorViewEngine>();
            IViewLocator locator = container.Resolve<Nancy.ViewEngines.IViewLocator>();
            IRenderContextFactory renderContextFactory = container.Resolve<IRenderContextFactory>();
            RazorPreloader preloader = new RazorPreloader(engine, locator, renderContextFactory);

            foreach (var pathAndModel in ViewPathsAndModels)
            {
                // Avoid capturing the loop variable, it does not work how you expect it to work in some .NET versions.
                // No idea what mono does with it.
                string viewPath = pathAndModel.Key;
                object viewModel = pathAndModel.Value;
                ThreadPool.QueueUserWorkItem(x => PrecompileView(viewPath, viewModel, engine, locator, renderContextFactory, preloader));
            }
        }
コード例 #2
0
ファイル: BootStrapper.cs プロジェクト: mageomageos/animerecs
        private static void PrecompileView(string viewPath, object viewModel, RazorViewEngine engine, IViewLocator locator,
            IRenderContextFactory renderContextFactory, RazorPreloader preloader)
        {
            try
            {
                Logging.Log.DebugFormat("Precompiling view {0}", viewPath);
                preloader.PreloadRazorView(viewPath, viewModel);
                Logging.Log.DebugFormat("Finished precompiling view {0}", viewPath);
            }
            catch (Exception ex)
            {
                Logging.Log.ErrorFormat("Error precompiling view {0}: {1}", ex, viewPath, ex.Message);
            }

            lock (ViewsFinishedPrecompiling)
            {
                ViewsFinishedPrecompiling.Add(viewPath);
                if (ViewsFinishedPrecompiling.Count == ViewPathsAndModels.Count)
                {
                    Logging.Log.Info("Finished precompiling views");
                }
            }
        }