📄 logtoqueuethread.cs
字号:
using System;
using System.Threading;
using System.IO;
using MonitorSystem.BasicClass;
namespace MonitorSystem.MonitorInterface
{
/// <summary>
/// 监视本地\log\remote文件夹,将各节点上传的文件放入队列InitLogQueue
/// </summary>
public class LogToQueueThread
{
private Thread m_Thread;
private bool m_Pause;
private bool m_Exit;
private static InitLogQueue m_InitLogQueue ;
private FileSystemWatcher FileWatcher;
private static ConfigFile m_ConfigFile;
private SystemLog m_SysLog;
private string WatchDir;
private string WatchFilter;
public LogToQueueThread()
{
m_SysLog = new SystemLog();
m_Pause = false;
m_Exit = false;
}
public void Init(ConfigFile iCfgFile, ref InitLogQueue iInitLogQueue)
{
m_ConfigFile = iCfgFile;
m_InitLogQueue = iInitLogQueue;
}
public void Run()
{
try
{
//1.程序运行参数From App.Config
// LOG路径
WatchDir = m_ConfigFile.LogRemote_Path ;
if(WatchDir[WatchDir.Length-1]!='\\')
WatchDir+="\\";
// 文件名匹配
WatchFilter = m_ConfigFile.LogFilter;
//2.启动监控
//初始化文件监控对象
FileWatcher = new FileSystemWatcher();
FileWatcher.Path = WatchDir; // 通过配置文件来进行指定
FileWatcher.Filter = WatchFilter;
FileWatcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// 添加事件响应,监控到LOG目录有新文件产生时,将文件名加入待处理队列
FileWatcher.Created += new FileSystemEventHandler(OnChanged);
FileWatcher.EnableRaisingEvents = true;
}
catch(Exception e)
{
string msg = String.Format("监控到LOG目录错误.{0}", e.Message);
m_SysLog.WriteToSysLog(0,msg);
}
}
public static void OnChanged(object source, FileSystemEventArgs e)
{
if(e.ChangeType == WatcherChangeTypes.Created && e.Name.ToUpper().StartsWith("MONITOR"))
{
string FileName = e.Name;
string PlatformID = FileName.Substring(8,4);
string NodeID = FileName.Substring(13,4);
if(m_ConfigFile.PlatformID==Convert.ToInt32(PlatformID))
{
for(int i=0; i<m_ConfigFile.NodeID.Length; i++)
{
if(m_ConfigFile.NodeID[i]==Convert.ToInt32(NodeID))
{
InterfaceService.m_bNodeCheck[i] = true;
m_InitLogQueue.Enqueue(e.FullPath);
}
}
}
}
}
public void Startup()
{
m_Thread = new Thread(new ThreadStart(this.Run));
// Start the thread
m_Pause = false;
m_Exit = false;
m_Thread.Start();
}
public void Join()
{
if(m_Thread != null)
{
m_Thread.Interrupt();
m_Thread.Join();
}
else
{
return;
}
}
public bool IsAlive()
{
if(m_Thread != null)
{
return m_Thread.IsAlive;
}
else
{
return false;
}
}
public void Suspend()
{
if(m_Pause == false)
m_Pause = true;
}
public void Resume()
{
if(m_Pause == true)
m_Pause = false;
}
public void SetExit()
{
if(m_Exit == false)
m_Exit = true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -