定时重启指定的软件

devtools/2024/11/17 5:36:48/

做一个简单的控制台程序, 让他在指定的时间, 关闭指定的软件(的进程), 关闭后再打开这个软件


①创建控制台程序, 主要代码:

using System.Diagnostics;namespace AutomaticRestart
{public class Program{public static string ProcessNames = Convert.ToString(CustomConfigManager.GetConfig("ProcessNames"));//需关闭的进程名称public static int RestartTime = Convert.ToInt(CustomConfigManager.GetConfig("RestartTime"));//重启时间,单位秒public static int count = 0;public static void Main(string[] args){while (true){#region ①先关闭程序try{if (!string.IsNullOrWhiteSpace(ProcessNames)){string[] strArr = ProcessNames.Split('|');foreach (string processName in strArr){foreach (var process in System.Diagnostics.Process.GetProcessesByName(processName)){try{//Console.WriteLine($"正在关闭 {processName} 进程...");process.Kill();Console.WriteLine($"已关闭 {processName} 进程.");}catch (Exception ex){Console.WriteLine($"无法关闭 {processName} 进程: {ex.Message}");}Thread.Sleep(1000);//休息  }Thread.Sleep(1000);//休息  }}}catch (Exception ex){Console.WriteLine($"无法关闭进程: {ex.Message}");continue;//循环继续}#endregion#region ②再打开程序finally//运行程序{string filePath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "ProcessRun.txt";if (File.Exists(filePath))//判断*.txt文件是否存在{string[] lines = File.ReadAllLines(filePath);//读取txt文件每一行(一行一个*.exe文件路径记录)foreach (string line in lines){try{if (File.Exists(line))//判断*.exe文件是否存在{Process.Start(line);Console.WriteLine($"{line} 启动成功...");}}catch (Exception ex){Console.WriteLine($"{line} 无法启动, {ex.Message} ");}Thread.Sleep(1000);//休息  }}}#endregion#region ③定时循环处理Console.WriteLine($"休息 {RestartTime} 秒...");//1小时=3600秒     Thread.Sleep(RestartTime * 1000);//休息if (count > 9){count = 0;Console.Clear();}else{Console.WriteLine("-------------------------------------------------");Console.WriteLine();}#endregion}}}
}

②配置文件配置

appconfig.json文件(关闭程序的进程名称):

{//需要关闭的进程名称(区分大小写),多个进程用|号间隔,如: DVR_AlarmListen|DataConvert.APP"ProcessNames": "DVR_AlarmListen|DataConvert.APP",//重启时间,单位秒(30三十秒,60一分钟,300五分钟,600十分钟,900十五分钟,1800三十分钟,3600一小时,10800三小时,14400四小时,21600六小时,28800八小时,43200十二小时)"RestartTime": 30
}

 ProcessRun.txt文件(启动程序的路径):

D:\iis\DVR_AlarmListen\netcoreapp3.1\DVR_AlarmListen.exe
D:\iis\DataConvert.APP\net6.0\DataConvert.APP.exe


③读取appconfig.json的配置

using Microsoft.Extensions.Configuration;namespace AutomaticRestart
{public class CustomConfigManager{//读取配置文件:appsettings//1.Microsoft.Extensions.Configuration;//NuGet获取//2.Microsoft.Extensions.Configuration.Json;//NuGet获取 public static string GetConfig(string key){var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); //默认读取:当前运行目录IConfigurationRoot configuration = builder.Build();string configValue = configuration.GetSection(key).Value;return configValue;}}
}


http://www.ppmy.cn/devtools/18506.html

相关文章

DRF JWT认证进阶

JWT认证进阶 【0】准备工作 (1)模型准备 模型准备(继承django的auth_user表) from django.db import models from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser):mobile models.CharField(ma…

微服务之分布式理论概述

一、分布式技术相关的理论 CAP理论 CAP定理(CAP theorem),⼜被称作布鲁尔定理(Eric Brewer),1998年第⼀次提出. 最初提出是指分布式数据存储不可能同时提供以下三种保证中的两种以上: (1) ⼀致性(Consistency): 每次读取收到的信息都是最新的; (2) …

(MSFT.O)微软2024财年Q3营收619亿美元

在科技的浩渺宇宙中,一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现,实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位,更引发了业界内外对这家…

学习 Rust 的第十二天:如何使用向量

大家好, 今天我们来看看计算机科学中的一种基本数据结构,即向量。向量在 Rust 中扮演着至关重要的角色,它在各种编程任务中都发挥着重要作用。像 Rust 这样的系统编程语言以其对安全性和性能的强调而闻名,因此向量提供了一些强大…

想要提升爬虫效率,该如何调整动态IP切换时间?

在进行网络爬虫操作时,动态代理IP的使用是常见的策略之一,用于隐藏爬虫的真实身份和规避目标网站的封锁。然而,一个常见的问题是:在做爬虫时,动态代理IP切换频率到底是越快越好呢?本文将从不同角度探讨这个…

ZooKeeper集群的搭建

ZooKeeper集群的搭建 将master节点的/data目录下的ZooKeeper安装包解压到/opt/software目录下 tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/software/在master节点切换至ZooKeeper安装目录的conf目录下,将zoo_sample.cfg重命名为zoo.cfg,并…

海外云服务对比: AWS、GCP、Azure 与 DigitalOcean

云计算市场持续增长,预计到2030年将达到 2432.87 亿美元。在这个庞大的市场中,三家云服务提供商——亚马逊(AWS)、谷歌云平台(GCP)和微软Azure——共占云市场份额的64%。当用户选择云服务提供商来托管他们的…

C语言读数据+遍历行数程序|Visual studio 2022

读数据遍历行数程序 记录一个度数遍历行数的程序 FILE* file2; int row2 0; file2 fopen("D://sins_mat2.txt", "r"); // file1 fopen("D://ga_mat2.txt", "r"); if (file2 NULL) {printf("open file1 failed.\n");re…