激活blog

本文介绍了一个使用C#实现的应用程序启动过程,其中包括了命令行参数处理、splash屏幕显示控制、异常处理机制、服务注册与初始化流程、插件目录配置及加载策略等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

激活blog

  [STAThread()]
  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();
   }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值