?? nodecheckthead.cs
字號:
using System;
using System.IO;
using System.Threading;
using MonitorSystem.BasicClass;
using MonitorSystem.LogFileModule;
namespace MonitorSystem.MonitorInterface
{
/// <summary>
/// NodeCheckThead 的摘要說明。
/// </summary>
public class NodeCheckThead
{
private Thread m_Thread;
private bool m_Pause;
private bool m_Exit;
private RecordQueue m_RecordQueue;
private SystemLog m_SysLog;
private ConfigFile m_CfgFile;
public NodeCheckThead()
{
m_Pause = false;
m_Exit = false;
m_SysLog=new SystemLog();
}
public void Init(ref RecordQueue queRecord,ConfigFile iCfgFile)
{
m_RecordQueue = queRecord;
m_CfgFile = iCfgFile;
}
public void Run()
{
while(true)
{
while(m_Pause)
{
try
{
Thread.Sleep(1000);
}
catch(Exception)
{
}
continue;
}
if(m_Exit)
{
break;
}
try
{
//心跳檢測間隔時間
Thread.Sleep(m_CfgFile.NodeCheckTimeSpan);
}
catch(Exception)
{
}
try
{
//檢查節點監控日志是否上傳
for(int i=0; i<InterfaceService.m_bNodeCheck.Length; i++)
{
if(InterfaceService.m_bNodeCheck[i]==false)
{
LogFile logRecord = new LogFile();
logRecord.iInterfaceAction = new int[1];
logRecord.strInActionParam = new String[1];
logRecord.strDateTime = System.DateTime.Now.ToString("yyyyMMddHHmmss");
logRecord.iPlatformID = Convert.ToInt32(m_CfgFile.PlatformID);
logRecord.iNodeID = Convert.ToInt32(m_CfgFile.NodeID[i]);
logRecord.iTypeID = 99;
logRecord.iRuleID = 0;
logRecord.strRuleName = "節點心跳檢測";
logRecord.strValue = "-1";
logRecord.iStatus = 4;
logRecord.iInterfaceAction[0] = 1;
logRecord.strInActionParam[0] = "";
//將記錄入待處理記錄隊列
this.m_RecordQueue.Enqueue(logRecord);
}
//將心跳檢測參數設為初始值
InterfaceService.m_bNodeCheck[i] = false;
}
/*
string[] LogFileList = Directory.GetFiles(m_CfgFile.LogRemote_Path);
for(int i=0;i<LogFileList.Length;i++)
{
for(int j=0;j< m_CfgFile.NodeID.Length;j++)
{
//if(LogFileList[i].Substring(13,4) == m_CfgFile.NodeID[j])
//{
// continue;
//}
//break;
}
logRecord.strDateTime = System.DateTime.Now.ToString("yyyyMMddHHmmss");
logRecord.iPlatformID = Convert.ToInt32(m_CfgFile.PlatformID);
//logRecord.iNodeID = Convert.ToInt32(m_CfgFile.NodeID[j]);
logRecord.iTypeID = 0;
logRecord.iRuleID = 0;
logRecord.strRuleName = "系統";
logRecord.strValue = "100";
logRecord.iStatus = 2;
logRecord.iAction = 1;
logRecord.strActionParam = "";
}
//生成監控日志文件,并將相關信息插入待發送日志文件隊列
try
{
m_LogFile.SetLog(m_LogNameHead,logRecord.strDateTime,logRecord.iPlatformID,
logRecord.iNodeID,logRecord.iTypeID,logRecord.iRuleID,
logRecord.strRuleName,logRecord.strValue,logRecord.iStatus,
logRecord.iAction,logRecord.strActionParam,
logRecord.strReserve1,logRecord.strReserve2);
m_LogFile.InterfaceWriteToFile();
if (m_LogFile.m_IsUpdate)
{
m_UploadLogQueue.Enqueue(m_LogFile.m_UploadFile);
m_LogFile.m_IsUpdate = false;
}
}
catch(Exception ex)
{
m_SysLog.WriteToSysLog(ex.Message);
}*/
}
catch(Exception ex)
{
string msg=String.Format("節點狀態檢查失敗:{0}",ex.Message);
m_SysLog.WriteToSysLog(msg);
}
if(m_Exit)
{
break;
}
}
}
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 + -