static void Run()
        {
            // DO NOT USE LoggingService HERE!
            // LoggingService requires ICSharpCode.Core.dll and log4net.dll
            // When a method containing a call to LoggingService is JITted, the
            // libraries are loaded.
            // We want to show the SplashScreen while those libraries are loading, so
            // don't call LoggingService.

                        #if DEBUG
            Control.CheckForIllegalCrossThreadCalls = true;
                        #endif
            bool noLogo = false;

            Application.SetCompatibleTextRenderingDefault(false);
            SplashScreenForm.SetCommandLineArgs(commandLineArgs);

            foreach (string parameter in SplashScreenForm.GetParameterList())
            {
                if ("nologo".Equals(parameter, StringComparison.OrdinalIgnoreCase))
                {
                    noLogo = true;
                }
            }

            if (!CheckEnvironment())
            {
                return;
            }

            if (!noLogo)
            {
                SplashScreenForm.ShowSplashScreen();
            }
            try {
                RunApplication();
            } finally {
                if (SplashScreenForm.SplashScreen != null)
                {
                    SplashScreenForm.SplashScreen.Dispose();
                }
            }
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            commandLineArgs = args;
            bool noLogo = false;

            SplashScreenForm.SetCommandLineArgs(args);

            foreach (string parameter in SplashScreenForm.GetParameterList())
            {
                switch (parameter.ToUpper())
                {
                case "NOLOGO":
                    noLogo = true;
                    break;
                }
            }

            if (!noLogo)
            {
                SplashScreenForm.SplashScreen.Show();
            }
            Application.ThreadException += new ThreadExceptionEventHandler(ShowErrorBox);

            bool ignoreDefaultPath = false;

            string [] addInDirs = ICSharpCode.SharpDevelop.AddInSettingsHandler.GetAddInDirectories(out ignoreDefaultPath);
            AddInTreeSingleton.SetAddInDirectories(addInDirs, ignoreDefaultPath);

            ArrayList commands = null;

            try
            {
                ServiceManager.Services.AddService(new MessageService());
                ServiceManager.Services.AddService(new ResourceService());
                ServiceManager.Services.AddService(new IconService());
                ServiceManager.Services.InitializeServicesSubsystem("/Workspace/Services");

                commands = AddInTreeSingleton.AddInTree.GetTreeNode("/Workspace/Autostart").BuildChildItems(null);
                for (int i = 0; i < commands.Count - 1; ++i)
                {
                    ((ICommand)commands[i]).Run();
                }
            }
            catch (XmlException e)
            {
                MessageBox.Show("Could not load XML :" + Environment.NewLine + e.Message);
                return;
            }
            catch (Exception e)
            {
                MessageBox.Show("Loading error, please reinstall :" + Environment.NewLine + e.ToString());
                return;
            }
            finally
            {
                if (SplashScreenForm.SplashScreen != null)
                {
                    SplashScreenForm.SplashScreen.Close();
                }
            }

            try
            {
                // run the last autostart command, this must be the workbench starting command
                if (commands.Count > 0)
                {
                    ((ICommand)commands[commands.Count - 1]).Run();
                }
            }
            finally
            {
                // unloading services
                ServiceManager.Services.UnloadAllServices();
            }
        }