Esempio n. 1
0
        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);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        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);
        }