79 lines
1.6 KiB
C#
79 lines
1.6 KiB
C#
using System;
|
||
using System.IO;
|
||
using System.Threading.Tasks;
|
||
using Aitex.Common.Util;
|
||
using Aitex.Core.RT.Event;
|
||
using Aitex.Core.RT.Log;
|
||
using Aitex.Core.RT.SCCore;
|
||
using Aitex.Core.Util;
|
||
|
||
namespace MECF.Framework.Common.DataCenter
|
||
{
|
||
public class DiskManager
|
||
{
|
||
private PeriodicJob _threadMonitorDiskSpace;
|
||
|
||
public bool IsEnableMonitorDiskSpaceFunc { get; set; }
|
||
|
||
public DiskManager()
|
||
{
|
||
if (SC.ContainsItem("System.IsEnableMonitorDiskSpaceFunc"))
|
||
{
|
||
IsEnableMonitorDiskSpaceFunc = SC.GetValue<bool>("System.IsEnableMonitorDiskSpaceFunc");
|
||
}
|
||
}
|
||
|
||
public void Run()
|
||
{
|
||
_threadMonitorDiskSpace = new PeriodicJob(1800000, MonitorDiskSpace, "MonitorDiskSpace Thread");
|
||
Task.Delay(10000).ContinueWith(delegate
|
||
{
|
||
_threadMonitorDiskSpace.Start();
|
||
});
|
||
}
|
||
|
||
private bool MonitorDiskSpace()
|
||
{
|
||
try
|
||
{
|
||
long num = 0L;
|
||
long num2 = 0L;
|
||
string text = PathManager.GetAppDir().Substring(0, 3);
|
||
DriveInfo[] drives = DriveInfo.GetDrives();
|
||
DriveInfo[] array = drives;
|
||
foreach (DriveInfo driveInfo in array)
|
||
{
|
||
if (driveInfo.Name == text)
|
||
{
|
||
num = driveInfo.TotalFreeSpace;
|
||
num2 = driveInfo.TotalSize;
|
||
}
|
||
}
|
||
if ((double)num < (double)num2 * 0.05)
|
||
{
|
||
EV.PostAlarmLog("System", text + " Hard disk Free Space is less than 5% ,need release");
|
||
}
|
||
else if ((double)num < (double)num2 * 0.1)
|
||
{
|
||
EV.PostWarningLog("System", text + " Hard disk Free Space is less than 10%,need release");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LOG.Write(ex);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
public void Stop()
|
||
{
|
||
_threadMonitorDiskSpace.Stop();
|
||
}
|
||
|
||
~DiskManager()
|
||
{
|
||
Stop();
|
||
}
|
||
}
|
||
}
|