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); }
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未处理的异常!!!!"); }