实时监控文件夹应用(WinForm 中通过结合windowsService一起使用)

来源:互联网 发布:网络骚扰算犯罪吗 编辑:程序博客网 时间:2024/06/03 20:46
要求:开机即可进行对于文件夹进行侦测是否有创建文件(方法:使用windowsService 和 fileSystemWatcher 监控文件夹)
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>
        /// 服務啟動
        /// </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

原创粉丝点击