定时重启指定的软件

本文介绍了一个使用C#编写的控制台程序,该程序能按照appconfig.json中的配置,在指定时间间隔内自动关闭并重新启动指定的软件进程。程序通过读取配置文件和监控进程状态实现这一功能。
摘要由CSDN通过智能技术生成

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


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

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;
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值