示例#1
0
        protected override void OnStart(string[] args)
        {
            if (!ProgramUtils.IsMonoRuntime() &&
                ProgramUtils.IsRuningOnWindows() &&
                Environment.Version < Version.Parse("4.0.30319.17929"))
            {
                throw new ApplicationException("需要安装4.5或更新版本的Microsoft .NET Framework才能运行此程序!");
            }

            if (Entrance.Parameter.OnServiceStarting != null)
            {
                Entrance.Parameter.OnServiceStarting.Invoke();
            }

            if (Entrance.Parameter.LoadAllPlugins)
            {
                pluginActivators = AppDomain.CurrentDomain.GetAssemblies()
                                   .Select(ass => ass.GetTypes().FirstOrDefault(t =>
                                                                                !t.IsAbstract && !t.IsNotPublic && t.IsClass &&
                                                                                typeof(IPluginActivator).IsAssignableFrom(t)
                                                                                )).Where(t => t != null)
                                   .Select(t => (IPluginActivator)Activator.CreateInstance(t)).ToArray();

                //启动所有插件
                foreach (var activator in pluginActivators)
                {
                    activator.Start();
                }
            }

            //启动所有服务
            foreach (var service in ServiceManager.Instance.GetItems())
            {
                Console.Write($"服务[{service.Name}]");
                HunterUtils.TryHunt(service, Entrance.Parameter.Properties);
                Console.Write($"->启动中");
                service.Start();
                Console.WriteLine($"->完成");
            }

            if (Entrance.Parameter.OnServiceStarted != null)
            {
                Entrance.Parameter.OnServiceStarted.Invoke();
            }
        }