Example #1
0
        public ServiceLoader(IService.Host host)
        {
            this.serviceProp = host.serviceProp;
            AppDomainSetup setup = new AppDomainSetup();

            setup.LoaderOptimization = LoaderOptimization.SingleDomain;
            setup.ApplicationName    = serviceProp.Code;
            setup.ApplicationBase    = AppDomain.CurrentDomain.BaseDirectory;
            setup.PrivateBinPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, serviceProp.Directory);

            setup.CachePath             = setup.ApplicationBase; //Path.Combine(setup.ApplicationBase, "temp");
            setup.ShadowCopyFiles       = "true";
            setup.ShadowCopyDirectories = setup.ApplicationBase;

            AppDomain.CurrentDomain.SetShadowCopyFiles();

            this.AppDomain = AppDomain.CreateDomain(serviceProp.Code, null, setup);
            this.AppDomain.SetData("APP_CONFIG_FILE", serviceProp.DLLFullPath + ".config");

            String name = Assembly.GetExecutingAssembly().GetName().FullName;

            this.remoteLoader = (RemoteLoader)this.AppDomain.CreateInstanceAndUnwrap(name, typeof(RemoteLoader).FullName);
        }
Example #2
0
        public override void StartService(IService.Host host)
        {
            base.StartService(host);

            MessageTools.MessageHelper.Instance.WirteTest("正在启动服务" + System.Configuration.ConfigurationManager.AppSettings["Title"]);
            //此处实现服务内容,如启动Remoting 服务,启动WebService ,WCF 等

            int i = 0;
            Task t = new Task(delegate()
            {
                while (true)
                {
                    MessageTools.MessageHelper.Instance.WirteTest("每隔5s 执行一次,已执行:" + (i++) + "次");
                    System.Threading.Thread.Sleep(5 * 1000);
                    MessageTools.MessageHelper.Instance.WirteTest("新线程的AppDomain:" + AppDomain.CurrentDomain.FriendlyName);
                    //  throw new NotSupportedException("1未处理的异常!!!!");
                }
            });

            t.Start();
            MessageTools.MessageHelper.Instance.WirteTest("服务已启动" + System.Configuration.ConfigurationManager.AppSettings["Title"]);
            //throw new NotSupportedException("2未处理的异常!!!!");
        }