/// <summary> /// 向服务列表中添加一项 /// </summary> /// <param name="s"></param> private void AddServiceItem(ServiceProp s) { if (listView1.InvokeRequired) { Action actionDelegate = () => { ListViewItem lvi = new ListViewItem(); lvi.SubItems[0].Text = s.Code; lvi.SubItems.Add(s.Name); lvi.SubItems.Add(" "); lvi.SubItems.Add(" "); listView1.Items.Add(lvi); }; listView1.BeginInvoke(actionDelegate); } else { ListViewItem lvi = new ListViewItem(); lvi.SubItems[0].Text = s.Code; lvi.SubItems.Add(s.Name); lvi.SubItems.Add(" "); lvi.SubItems.Add(" "); listView1.Items.Add(lvi); } }
/// <summary> /// 启动服务域 /// </summary> /// <param name="serviceProp"></param> private void _StartServiceDomain(ServiceProp serviceProp) { try { SetServiceStatus(serviceProp.Code, "正在启动。。"); WriteToConsole("正在启动服务!" + serviceProp.Name, "info"); IService.Host serviceHost = new Host(this, serviceProp); //创建AppDomain 隔离 服务 ServiceManager manager = new ServiceManager(); manager.Logger = Util.GetLogger(serviceProp); manager.ServiceProp = serviceProp; manager.ServiceLoader = new ServiceLoader.ServiceLoader(serviceHost); manager.ServiceLoader.LoadAssembly(serviceProp); manager.Service = (IService.IService)manager.ServiceLoader.GetInstance(serviceProp.ClassName); //创建新的标签页 CreateTabPage(serviceProp); try { manager.Service.StartService(serviceHost); SetServiceStatus(serviceProp.Code, "启动"); WriteToConsole("服务" + serviceProp.Name + "已启动", "info"); } catch (Exception ex0) { WriteToConsole("启动服务时发生错误:" + serviceProp.Name, "error"); WriteToConsole(ex0.ToString(), "error"); SetServiceStatus(serviceProp.Code, "启动时发生错误"); } ServiceManagerList.Add(manager); } catch (Exception ex) { WriteToConsole("启动服务时发生错误:" + serviceProp.Name, "error"); WriteToConsole(ex.ToString(), "error"); SetServiceStatus(serviceProp.Code, "启动时发生错误"); } }
/// <summary> /// 创建标签页 /// </summary> /// <param name="serviceProp"></param> private void CreateTabPage(ServiceProp serviceProp) { try { //如果已存在就不再重新创建 if (tab.TabPages["tab" + serviceProp.Code] != null) { return; } //创建新的标签页 if (tab.InvokeRequired) { Action actionDelegate = () => { //创建textbox System.Windows.Forms.TextBox serviceInfo = new TextBox(); serviceInfo.BackColor = System.Drawing.SystemColors.ControlLightLight; serviceInfo.Dock = System.Windows.Forms.DockStyle.Fill; serviceInfo.Location = new System.Drawing.Point(3, 3); serviceInfo.Multiline = true; serviceInfo.Name = "txt" + serviceProp.Code; serviceInfo.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; serviceInfo.ReadOnly = true; serviceInfo.Size = new System.Drawing.Size(624, 455); //创建tablepage TabPage tabService = new TabPage(); tabService.Controls.Add(serviceInfo); tabService.Location = new System.Drawing.Point(4, 22); tabService.Name = "tab" + serviceProp.Code; tabService.Padding = new System.Windows.Forms.Padding(3); tabService.Size = new System.Drawing.Size(630, 461); tabService.Text = serviceProp.Name; tabService.UseVisualStyleBackColor = true; this.tab.Controls.Add(tabService); }; tab.BeginInvoke(actionDelegate); } else { //创建textbox System.Windows.Forms.TextBox serviceInfo = new TextBox(); serviceInfo.BackColor = System.Drawing.SystemColors.ControlLightLight; serviceInfo.Dock = System.Windows.Forms.DockStyle.Fill; serviceInfo.Location = new System.Drawing.Point(3, 3); serviceInfo.Multiline = true; serviceInfo.Name = "txt" + serviceProp.Code; serviceInfo.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; serviceInfo.ReadOnly = true; serviceInfo.Size = new System.Drawing.Size(624, 455); //创建tablepage TabPage tabService = new TabPage(); tabService.Controls.Add(serviceInfo); tabService.Location = new System.Drawing.Point(4, 22); tabService.Name = "tab" + serviceProp.Code; tabService.Padding = new System.Windows.Forms.Padding(3); tabService.Size = new System.Drawing.Size(630, 461); tabService.Text = serviceProp.Name; tabService.UseVisualStyleBackColor = true; this.tab.Controls.Add(tabService); } } catch (Exception ex) { WriteToConsole("创建服务标签页时发生错误:", "error"); WriteToConsole(ex.ToString(), "error"); } }
public static string GetServiceInfo(ServiceProp type) { ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("Select " + type + " From Win32_Service"); ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get(); string result = null; foreach (ManagementObject managementObject in managementObjectCollection.Cast<ManagementObject>()) { result = managementObject[type.ToString()].ToString(); } return result; }