Example #1
0
        /// <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);
            }
        }