/// <summary> /// Starts the application asynchronously. /// </summary> /// <returns> /// A task. /// </returns> public async Task StartAppAsync() { Console.WriteLine("Application initializing..."); var ambientServicesBuilder = new AmbientServicesBuilder(); var elapsed = await Profiler.WithStopwatchAsync( async () => { await ambientServicesBuilder .WithNLogManager() .WithNet45AppEnvironment() .WithMefCompositionContainerAsync(b => b.WithScopeFactory<UserMefScopeFactory>() .WithConventions(CompositionHelper.GetConventions())); var compositionContainer = ambientServicesBuilder.AmbientServices.CompositionContainer; var appBootstrapper = compositionContainer.GetExport<IAppBootstrapper>(); await appBootstrapper.StartAsync(new AppContext()); }); var container = ambientServicesBuilder.AmbientServices.CompositionContainer; var appManifest = container.GetExport<IAppManifest>(); Console.WriteLine(); Console.WriteLine($"Application '{appManifest.AppId} V{appManifest.AppVersion}' started. Elapsed: {elapsed:c}."); // TODO... var context = CreateUserContext(container, "Adela"); this.compositionContexts.Add("Adela", context); context = CreateUserContext(container, "Ioan"); this.compositionContexts.Add("Ioan", context); var gameManagerUser1 = this.compositionContexts["Ioan"].GetExport<IGameManager>().User.Name; var gameManagerUser2 = this.compositionContexts["Adela"].GetExport<IGameManager>().User.Name; }
private async Task<IAmbientServices> InitializeAmbientServicesAsync() { var ambientServicesBuilder = new AmbientServicesBuilder(); await ambientServicesBuilder .WithNLogManager() .WithNet45AppEnvironment() .WithMefCompositionContainerAsync(); return ambientServicesBuilder.AmbientServices; }
/// <summary> /// Starts the application asynchronously. /// </summary> /// <returns> /// A task. /// </returns> public async Task StartAppAsync() { Console.WriteLine("Application initializing..."); var ambientServicesBuilder = new AmbientServicesBuilder(); var elapsed = await Profiler.WithStopwatchAsync( async () => { await ambientServicesBuilder .WithNLogManager() .WithNet45AppEnvironment() .WithMefCompositionContainerAsync(); var compositionContainer = ambientServicesBuilder.AmbientServices.CompositionContainer; var appBootstrapper = compositionContainer.GetExport<IAppBootstrapper>(); await appBootstrapper.StartAsync(new AppContext()); }); var appManifest = ambientServicesBuilder.AmbientServices.CompositionContainer.GetExport<IAppManifest>(); Console.WriteLine(); Console.WriteLine($"Application '{appManifest.AppId} V{appManifest.AppVersion}' started. Elapsed: {elapsed:c}."); Console.WriteLine(); Console.WriteLine("Provide an operation in form of: term1 op term2. End the program with q instead of an operation."); var calculator = ((CalculatorAppManifest)appManifest).Calculator; while (true) { var input = Console.ReadLine(); if (input.ToLower().StartsWith("q")) { break; } try { var result = calculator.Compute(input); Console.WriteLine($"Result is: {result}."); Console.WriteLine(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.ForegroundColor = ConsoleColor.White; } } }
public static async Task<AmbientServices> InitializeAsync() { var ambientServicesBuilder = new AmbientServicesBuilder(); var elapsed = await Profiler.WithStopwatchAsync( async () => { await ambientServicesBuilder.WithNLogManager() .WithNet45HostingEnvironment() .WithMefCompositionContainerAsync(); var compositionContainer = ambientServicesBuilder.AmbientServices.CompositionContainer; var appBootstrapper = compositionContainer.GetExport<IAppBootstrapper>(); await appBootstrapper.StartAsync(new AppContext()); }); var ambientServices = ambientServicesBuilder.AmbientServices; (ambientServices as dynamic).Elapsed = elapsed; return ambientServices; }
/// <summary> /// Starts the application asynchronously. /// </summary> /// <returns> /// A task. /// </returns> public async Task StartAppAsync() { Console.WriteLine("Application starting..."); var ambientServicesBuilder = new AmbientServicesBuilder(); var elapsed = await Profiler.WithStopwatchAsync( async () => { await ambientServicesBuilder .WithNLogManager() .WithNet45AppEnvironment() .WithMefCompositionContainerAsync(); var appBootstrapper = ambientServicesBuilder.AmbientServices.CompositionContainer.GetExport<IAppBootstrapper>(); await appBootstrapper.StartAsync(new AppContext()); }); var appManifest = ambientServicesBuilder.AmbientServices.CompositionContainer.GetExport<IAppManifest>(); Console.WriteLine(); Console.WriteLine($"Application '{appManifest.AppId} V{appManifest.AppVersion}' started. Elapsed: {elapsed:c}."); Console.WriteLine(); Console.WriteLine("Press any key to end the program."); }