Пример #1
0
        public static async Task RunSample(AppHostSettings settings)
        {
            Console.WriteLine("=== Loop sample starts === ");
            Console.WriteLine("Press Ctrl+C to exit the loop.");

            using (var host = await OrchardAppHostFactory.StartHost(settings))
            {
                var run = true;

                // Hit Ctrl+C to exit the loop, but not the app (other samples will follow up).
                Console.CancelKeyPress += (sender, e) =>
                {
                    e.Cancel = true;
                    run      = false;
                };


                while (run)
                {
                    Console.WriteLine("Cycle starts.");


                    await host.Run <ILoggerService, IClock>((logger, clock) => Task.Run(() =>
                    {
                        logger.Error("Test log entry.");
                        Console.WriteLine(clock.UtcNow.ToString());
                    }));

                    // Another overload of Run() for simple transaction handling and for using the work context scope
                    // directly.
                    await host.RunInTransaction(async scope =>
                    {
                        Console.WriteLine(scope.Resolve <ISiteService>().GetSiteSettings().SiteName);

                        // Simulating an async call. Because of this the delegate is marked as async (and we don't
                        // need to wrap it into a Task.Run()).
                        await Task.Delay(3000);

                        Console.WriteLine(scope.Resolve <ISiteService>().GetSiteSettings().SiteName);
                        Console.WriteLine(scope.Resolve <ShellSettings>().Name);
                    });


                    Console.WriteLine("Cycle ends.");
                    Console.WriteLine();
                }
            }

            Console.WriteLine("=== Loop sample ended === ");
        }
        public static async Task RunSample(AppHostSettings settings)
        {
            Console.WriteLine("=== Setup sample starts === ");

            using (var host = await OrchardAppHostFactory.StartHost(settings))
            {
                // We can even run the setup on a new shell. A project reference to Orchard.Setup is needed.
                // The setup shouldn't run in a transaction.
                await host.Run <ISetupService, ShellSettings>((setupService, shellSettings) => Task.Run(() =>
                {
                    Console.WriteLine("Running setup for the following shell: " + shellSettings.Name);
                    setupService.Setup(new SetupContext
                    {
                        SiteName         = "Test",
                        AdminUsername    = "******",
                        AdminPassword    = "******",
                        DatabaseProvider = "SqlCe",
                        Recipe           = setupService.Recipes().Where(recipe => recipe.Name == "Default").Single()
                    });

                    Console.WriteLine("Setup done");
                }), wrapInTransaction : false);
            }

            using (var host = await OrchardAppHostFactory.StartHost(settings))
            {
                // After setup everything else should be run in a newly started host.
                await host.Run <ISiteService, ShellSettings>((siteService, shellSettings) => Task.Run(() =>
                {
                    Console.WriteLine(siteService.GetSiteSettings().SiteName);
                    Console.WriteLine(shellSettings.Name);
                }));
            }

            Console.WriteLine("=== Setup host sample ended === ");
        }