private void WatcherOnChanged(object sender, FileSystemEventArgs e) { if (e.ChangeType == WatcherChangeTypes.Created) { // 文件格式范例 172.31.108.248_01_20170905143220480_FACE_ALARM.jpg string[] vals = e.Name.Split('_'); if (vals.Length >= 3) { if (e.FullPath.EndsWith(".jpg") || e.FullPath.EndsWith(".bmp") || e.FullPath.EndsWith(".png")) { string cameraIp = vals[0]; if (cameraIp.Contains("\\")) { cameraIp = cameraIp.Substring(0, cameraIp.IndexOf("\\")); } string fileTime = DateTime.Now.ToString("yyyyMMddHHmmss"); Thread.Sleep(50); if (e.FullPath.ToLower().Contains("face")) { var fileFace = new FileFaceImage(fileTime, DateTime.Now, cameraIp, e.FullPath); Log4NetHelper.Instance.Info("抓拍人脸图像文件:" + cameraIp + "," + Path.GetFileName(e.FullPath)); ResultFileQueue.AddToQueue(fileFace); } else { Log4NetHelper.Instance.Debug("抓拍人脸图像文件忽略:" + e.FullPath); } } } } }
private void StartFileTask() { if (_taskFile != null) { return; } _taskFile = Task.Run(() => { while (true) { try { // 取消任务判断 if (_tokenFileWatch.IsCancellationRequested) { break; } FileFaceImage message = ResultFileQueue.GetFromQueue(); if (message == null) { Thread.Sleep(1000); continue; } else { if (ReceiveFaceEvent != null) { // 该处理确保图像文件已经完成,可以进行读取操作 Thread.Sleep(500); ReceiveFaceEvent(message); } } } catch (Exception ex) { Log4NetHelper.Instance.Error("从队列发送Kafka数据错误:" + (ex.InnerException != null ? ex.InnerException.Message : ex.Message)); } Thread.Sleep(1000); } }, _tokenFileWatch.Token); }