1.从WindowsService 说起,新建一个windowService 文件,命名为:LogTransferService.cs
2.拖入一个FileSystemWatcher 命名为 fileSystemWatcher1 :侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。
3. 通过一个方法设置侦听的文件夹,对文件夹操作的方式,侦听文件的类型.........
//<summary>
//使用FileSystemWatcher:偵聽文件系統創建通知,并在文件發生更改的時候引發事件。
//</summary>
private void UsingFileSystemWatcher()
{
string watcherFilePath = "E:\\POS_WS\\POS_LogTransferService\\POS_LogTransferService\\UpdateLog";
//設置偵聽目錄
fileSystemWatcher1.Path = watcherFilePath;
fileSystemWatcher1.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastAccess;
fileSystemWatcher1.Filter = "*.txt";
//是否監視子目錄
fileSystemWatcher1.IncludeSubdirectories = false;
#region 觸發的事件(文件创建的时候触发事件 4 )
fileSystemWatcher1.Created +=new FileSystemEventHandler(fileSystemWatcher1_Created);
#endregion
}
4. #region 觸發事件的方法
/// <summary>
/// 文件創建的時候觸發
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)
{
TransferType transferType = new TransferType();
//獲得后綴
string suffix = e.Name.Substring(e.Name.LastIndexOf('.')+1, e.Name.Length - e.Name.LastIndexOf('.')-1);
string fileName = fileSystemWatcher1.Path + "\\" + e.Name;
if (suffix == "txt")
transferType = TransferType.TextFileTransfer;
Transfer(fileName, transferType);
}
#endregion
5. 在服务启动时候进行检测:
/// 服務啟動
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
//使用FileSystemWatcher:侦听文件系统
UsingFileSystemWatcher();
//服務開啟的時候,發送郵件通知
SendMsgAboutServer(MsgSenderType.EmailSender, TransferService.ServerStart);
}
6. 安装与卸载服务
在windowsService 页面 右键 加入安装程式自动生成 ServcieProcessInstall1 和ServiceInstaller 两个
通过ServiceProcessInstall 可以进行设置 访问的方式:Account:LocalService,NetWorkService,LoaclSystem,User
通过ServiceInstaller可以设置 DispalyName(安装服务后的显示名称),ServiceName,StartType(服务启动方式:自动或者手动)
7.生成解决方案:在该项目的debug 文件夹下面会有 生成服务的.exe 文件
安装该文件的命令:从Visual studio tools-->进入命令提示符--->进入生成的.exe路径
安装:输入命令: instalutil POS_LogTransferService.exe
卸载:输入命令:installutil /u POS_LogTransferService.exe