using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace ServiceHelper { public enum WorkType { Install, Uninstall, Start, Stop, Restart, } public partial class ServiceHelper : Form { private const string serviceName = "Aca.Certain.MiddleService"; private const string serviceInstallPath = "Aca.Certain.MiddleService.exe"; private Progress progress = new Progress(); public static BackgroundWorker bgWorker = new BackgroundWorker(); public ServiceHelper() { InitializeComponent(); bgWorker.WorkerReportsProgress = true; bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork); bgWorker.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgressChanged); bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted); } void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { progress.Done(); if (!string.IsNullOrEmpty((string)e.Result)) { MessageBox.Show((string)e.Result, "消息", MessageBoxButtons.OK); } } void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { progress.UpdateProgress(); } void bgWorker_DoWork(object sender, DoWorkEventArgs e) { try { progress.Reset(); switch ((WorkType)e.Argument) { case WorkType.Install: { ServiceControl.Install(serviceName, serviceInstallPath); e.Result = "安装服务成功!"; } break; case WorkType.Uninstall: { ServiceControl.Uninstall(serviceName, serviceInstallPath); e.Result = "卸载服务成功!"; } break; case WorkType.Start: { ServiceControl.Start(serviceName); e.Result = "启动服务成功!"; } break; case WorkType.Stop: { ServiceControl.Stop(serviceName); e.Result = "停止服务成功!"; } break; case WorkType.Restart: { ServiceControl.Restart(serviceName); e.Result = "重启服务成功!"; } break; } } catch (Exception ex) { progress.Hide(); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK); } } private void InstallBtn_Click(object sender, EventArgs e) { try { bgWorker.RunWorkerAsync(WorkType.Install); progress.Text = "安装服务中……"; progress.ShowDialog(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK); } } private void UninstallBtn_Click(object sender, EventArgs e) { try { bgWorker.RunWorkerAsync(WorkType.Uninstall); progress.Text = "卸载服务中……"; progress.ShowDialog(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK); } } private void StartBtn_Click(object sender, EventArgs e) { try { bgWorker.RunWorkerAsync(WorkType.Start); progress.Text = "启动服务中……"; progress.ShowDialog(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK); } } private void StopBtn_Click(object sender, EventArgs e) { try { bgWorker.RunWorkerAsync(WorkType.Stop); progress.Text = "停止服务中……"; progress.ShowDialog(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK); } } private void RestartBtn_Click(object sender, EventArgs e) { try { bgWorker.RunWorkerAsync(WorkType.Restart); progress.Text = "重启服务中……"; progress.ShowDialog(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK); } } private void ConfigBtn_Click(object sender, EventArgs e) { try { Settings settings = new Settings(); settings.ShowDialog(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "获取配置失败", MessageBoxButtons.OK); } } } }