?? logtoqueuethread.cs
字號:
using System;
using System.Threading;
using System.IO;
using MonitorSystem.BasicClass;
namespace MonitorSystem.MonitorInterface
{
/// <summary>
/// 監(jiān)視本地\log\remote文件夾,將各節(jié)點上傳的文件放入隊列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.程序運行參數(shù)From App.Config
// LOG路徑
WatchDir = m_ConfigFile.LogRemote_Path ;
if(WatchDir[WatchDir.Length-1]!='\\')
WatchDir+="\\";
// 文件名匹配
WatchFilter = m_ConfigFile.LogFilter;
//2.啟動監(jiān)控
//初始化文件監(jiān)控對象
FileWatcher = new FileSystemWatcher();
FileWatcher.Path = WatchDir; // 通過配置文件來進行指定
FileWatcher.Filter = WatchFilter;
FileWatcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// 添加事件響應,監(jiān)控到LOG目錄有新文件產(chǎn)生時,將文件名加入待處理隊列
FileWatcher.Created += new FileSystemEventHandler(OnChanged);
FileWatcher.EnableRaisingEvents = true;
}
catch(Exception e)
{
string msg = String.Format("監(jiān)控到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 + -