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 === "); }