/// <summary> /// Closes the application. Generally, that should lead to the process being terminated. /// </summary> /// <remarks> /// All services that implement <see cref="IStartable"/> are stopped here, in reverse order that they /// have been started. /// </remarks> public virtual void CloseApplication() { foreach (IService service in ServiceProvider.AllServices.Reverse <IService>()) { IStartable startable; startable = service as IStartable; if (startable != null) { startable.Stop(); } } ServiceProvider.Clear(); PresentationController.ViewControllers.Clear(); ObjectContainer.Clear(); _started = false; }
public static void TestAll() { SystemConfiguration.UseMultiThread = false; //if (MessageForm.ShowYesNo("Operate Data?")) { operateData = true; } m_stringExceptionProcess.Clear(); var instance = DefaultServiceProvider.Instance; IExceptionProcess defaultEp = null; IMessageBox defaultMb = null; if (instance != null) { defaultEp = ServiceProvider.GetService <IExceptionProcess>(); instance.SetDefaultService <IExceptionProcess>(m_stringExceptionProcess); defaultMb = ServiceProvider.GetService <IMessageBox>(); instance.SetDefaultService <IMessageBox>(m_emptyMessageBox); ServiceProvider.Clear(); } IList <MenuInfo> menuInfos = ADInfoBll.Instance.GetTopMenuInfos(); foreach (MenuInfo info in menuInfos) { TestMenu(info); } if (instance != null) { instance.SetDefaultService <IExceptionProcess>(defaultEp); instance.SetDefaultService <IMessageBox>(defaultMb); ServiceProvider.Clear(); } SystemConfiguration.UseMultiThread = true; ErrorReport errorReport = new ErrorReport("测试中的异常,请见详细内容。", "测试信息", MessageImage.Information, m_stringExceptionProcess.Exceptions); errorReport.ShowDialog(); }
public void OnGet_WithAddInstance_Clear_ItShouldResolveTheSameInstance() { //Arrange var subject = new ServiceProvider(); var expectedInstance = new Test3(); subject.Add <ITest1, Test1>(); subject.Add <ITest2, Test2>(); subject.Add <ITest3, Test3>(); subject.Get <ITest1>(); subject.Add <ITest3>(expectedInstance); //Act subject.Clear(); var result = subject.Get <ITest1>(); //Assert Assert.Same(expectedInstance, result.Test2.Test3); }
/// <summary> /// Closes the application. Generally, that should lead to the process being terminated. /// </summary> /// <remarks> /// All services that implement <see cref="IStartable"/> are stopped here, in reverse order that they /// have been started. /// </remarks> public virtual void CloseApplication() { // Deactivate and unload all modules ApplicationModuleManager.DeactivateAll(); ApplicationModuleManager.UnloadAll(); // Stop all services foreach (IService service in ServiceProvider.AllServices.Reverse()) { IStartable startable; startable = service as IStartable; if (startable != null) startable.Stop(); } // Clean containers // todo: something else to clean? ServiceProvider.Clear(); _started = false; }