Exemple #1
0
        private int _maxWriteCount      = 10000;          //允许写的最大数量

        /// <summary>
        ///
        /// </summary>
        /// <param name="maxWriteCount">允许写的最大数量</param>
        /// <param name="handleMessage">处理的方法</param>
        /// <param name="handNoCount">当前队列没有没有消息的处理方法,在单次处理完之后调用</param>
        public BufferQueue(int maxWriteCount, Action <TMessage> handleMessage, Action handNoCount = null)
        {
            EnsureUtil.NotNull(handleMessage, "处理方法不能为空");
            _maxWriteCount = maxWriteCount;
            _messageQueue  = new ConcurrentQueue <TMessage>();
            _handleMessage = handleMessage;
            _handNoCount   = handNoCount;
        }
 /// <summary>
 /// .ctor
 /// </summary>
 /// <param name="maxWriteCount">写的最大数量,超出后,改变写入速度</param>
 /// <param name="handleMessageAction">处理消息的方法</param>
 /// <param name="handNoCountAction">当卡队列处理完毕的通知</param>
 public DoubleBufferQueue(int maxWriteCount, Action <T> handleMessageAction, Action handNoCountAction)
 {
     EnsureUtil.NotNull(handleMessageAction, "消息处理方法不能为空");
     _writeQueue          = new ConcurrentQueue <T>();
     _readQueue           = new ConcurrentQueue <T>();
     _handleMessageAction = handleMessageAction;
     _handNoCountAction   = handNoCountAction;
     _maxWriteCount       = maxWriteCount;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="fileInfo">文件信息</param>
 /// <param name="action">文件改变后的执行的方法</param>
 /// <param name="timeOutMillis">延迟时间</param>
 /// <param name="isStart">是否启动监听</param>
 public FileWatchUtil(FileInfo fileInfo, Action <FileStream> action, int?timeOutMillis = null, bool isStart = false)
 {
     if (timeOutMillis.HasValue)
     {
         _timeOutMillis = timeOutMillis.Value;
     }
     EnsureUtil.NotNull(action, "file changed action");
     EnsureUtil.NotNull(_fileInfo, "watching fileInfo");
     _fileChangedHandle = action;
     _fileInfo          = fileInfo;
     if (isStart)
     {
         OnWatchedFileChange(null);
         StartWatching();
     }
 }
        private Action <FileStream> _fileChangedHandle = null; //文件变动后执行方法

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="action">文件改变后的执行的方法</param>
        /// <param name="timeOutMillis">延迟时间</param>
        /// <param name="isStart">是否启动监听</param>
        public FileWatchUtil(string filePath, Action <FileStream> action, int?timeOutMillis = null, bool isStart = false)
        {
            if (FileUtil.IsExistsFile(filePath))
            {
                if (timeOutMillis.HasValue)
                {
                    _timeOutMillis = timeOutMillis.Value;
                }
                EnsureUtil.NotNull(action, "file changed action");
                _fileChangedHandle = action;
                _fileInfo          = new FileInfo(filePath);
                if (isStart)
                {
                    OnWatchedFileChange(null);
                    StartWatching();
                }
                _fileWatchList.Add(this);
            }
            else
            {
                //      LogUtil.Warn($"文件不存在【{filePath}】");
            }
        }