注意 VS2019 C# 使用第三方库:Material Prism
1、创建一个WPF项目
1.1 选择WPF项目模板
1.2 修改项目名称和位置
1.3 安装第三方库
1.4 在主文件中配置资源项
2 设置界面
3 添加业务逻辑类
3.1 添加业务类
注意添加命名空间
3.2 添加命令委托(用于界面绑定)
3.3 添加实际业务处理逻辑
/// <summary>
/// 服务是否存在
/// </summary>
/// <param name="serviceName">服务名称</param>
/// <returns></returns>
private bool IsServiceExisted(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController service in services)
{
Console.WriteLine(service.ServiceName);
if (service.ServiceName.ToLower() == serviceName.ToLower())
{
return true;
}
}
return false;
}
/// <summary>
/// 安装服务
/// </summary>
/// <param name="serviceFilePath">服务程序路径</param>
private void InstallService(string serviceFilePath)
{
using (AssemblyInstaller installer = new AssemblyInstaller())
{
installer.UseNewContext = true;
installer.Path = serviceFilePath;
IDictionary savedState = new Hashtable();
installer.Install(savedState);
installer.Commit(savedState);
}
}
/// <summary>
/// 卸载服务
/// </summary>
/// <param name="serviceFilePath">服务程序路径</param>
private void UninstallService(string serviceFilePath)
{
using (AssemblyInstaller installer = new AssemblyInstaller())
{
installer.UseNewContext = true;
installer.Path = serviceFilePath;
installer.Uninstall(null);
}
}
/// <summary>
/// 开启服务
/// </summary>
/// <param name="serviceName">服务名称</param>
private void ServiceStart(string serviceName)
{
using (ServiceController control = new ServiceController(serviceName))
{
if (control.Status == ServiceControllerStatus.Stopped)
{
control.Start();
}
}
}
/// <summary>
/// 停止服务
/// </summary>
/// <param name="serviceName">服务名称</param>
private void ServiceStop(string serviceName)
{
using (ServiceController control = new ServiceController(serviceName))
{
if (control.Status == ServiceControllerStatus.Running)
{
control.Stop();
}
}
}
3.4 构造函数中初始化命令
InstallCommand = new DelegateCommand(()=> {
if (IsServiceExisted(serviceName))
{
UninstallService(serviceFilePath);
}
InstallService(serviceFilePath);
outMsg?.Invoke("InstallCommand Success!");
});
UninstallCommand = new DelegateCommand(() => {
if (IsServiceExisted(serviceName))
{
ServiceStop(serviceName);
UninstallService(serviceFilePath);
}
outMsg?.Invoke("UninstallCommand Success!");
});
StartUpCommand = new DelegateCommand(() => {
if (IsServiceExisted(serviceName))
{
ServiceStart(serviceName);
}
outMsg?.Invoke("StartUpCommand Success!");
});
StopCommand = new DelegateCommand(() => {
if (IsServiceExisted(serviceName))
{
ServiceStop(serviceName);
}
outMsg?.Invoke("StopCommand Success!");
});
4 业务类与界面类关联
4.1 绑定数据类
4.2 界面按钮与属性绑定
5 增加管理员运行权限
5.1 增加配置权限文件
5.2 修改配置文件信息,更改为管理员权限