/// <summary> /// Start the applications if they are stopped. /// </summary> private void StartApp() { if (m_cd.AppStatus != KwsAppStatus.Stopped) { return; } m_cd.AppStatus = KwsAppStatus.Starting; try { // Prepare the workspace to work. m_kws.PrepareToWork(); if (m_cd.AppStatus != KwsAppStatus.Starting) { return; } // Prepare the applications to work. foreach (KwsApp app in m_kws.AppTree.Values) { app.PrepareToWork(); if (m_cd.AppStatus != KwsAppStatus.Starting) { return; } } // Ask the applications to start. foreach (KwsApp app in m_kws.AppTree.Values) { Debug.Assert(app.AppStatus == KwsAppStatus.Stopped); app.AppStatus = KwsAppStatus.Starting; app.Start(); if (m_cd.AppStatus != KwsAppStatus.Starting) { return; } } // Required if there are no applications. OnAppStarted(); } catch (Exception ex) { HandleMiscFailure(ex); } }