甘肃网站空间,买了域名怎么用,房地产官网,网站维护和制作怎么做会计分录记录一个用C#实现的windows计时执行任务的服务
这个服务实现的功能是每天下午六点统计一次指定路径的文件夹大小
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using Syst…记录一个用C#实现的windows计时执行任务的服务
这个服务实现的功能是每天下午六点统计一次指定路径的文件夹大小
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;namespace ProjectSizeStatistics
{public partial class MyService1 : ServiceBase{public MyService1(){InitializeComponent();}protected override void OnStart(string[] args){WriteInfo(服务启动);InitTimer();}int _checkHour 18; //每天六点检测private string filePath D:\FileSizeStatistic.txt;void InitTimer(){var timer new System.Threading.Timer(TimerCallBack, null, 5000, 360000); //一小时执行一次}void TimerCallBack(object pData){DateTime now DateTime.Now;var hour now.Hour;if (hour _checkHour){SampleProjectSize();}}/// summary/// 采集项目大小/// /summaryvoid SampleProjectSize(){string path D:\Projects\GitProject\ClientPro;long size GetDirectorySize(path);int GB (int)(size / 1024 / 1024 / 1024);float remainGb size * 1.0f / 1024 / 1024 / 1024 - GB;WriteInfo(${path} 文件大小为\{size}\字节\t{(GB remainGb).ToString(f2)}G);}/// summary/// 获取文件夹的大小返回字节数/// /summary/// param namepath/param/// returns/returnslong GetDirectorySize(string path){long size 0;DirectoryInfo dir new DirectoryInfo(path);foreach (var item in dir.GetFiles()){size item.Length;}foreach (var item in dir.GetDirectories()){size GetDirectorySize(item.FullName);}return size;}private void WriteInfo(string info){//using (FileStream fs new FileStream(filePath, FileMode.OpenOrCreate))//{//}using (StreamWriter writer File.AppendText(filePath)){writer.WriteLine(${DateTime.Now}\t{info});}}protected override void OnStop(){}}
}生成服务之后在对应bin/Debug目录下面会有一个对应的exe可执行文件但是如果直接执行可执行文件会有这个弹窗这是说明这个服务不能直接运行要通过Installutil.exe去执行 这里如果我们安装的VisualStudio的话那么C盘的 C:\Windows\Microsoft.NET\Framework\v4.0.30319这个目录下面就会有InstallUtil.exe这个可执行文件我们以管理员的身份运行命令提示符之后进入到这个目录执行这个命令 installutil.exe 你的服务exe的绝对路径 这样在windows服务中我们就能找到我们对应的服务了启动它即可。
如果要卸载服务可执行以下命令 installutil.exe 你的服务exe的绝对路径 -u 小提示我们每次修改我们的服务内容之后只需要重新生成服务项目不需要重新安装服务生成好之后启动服务即可。