c#一个定时重启的小程序实现代码第2/2页

 更新时间:2008年09月20日 13:05:42   作者:  
今天有个朋友找我问有没有一些能像Windows一样计划任务重启的软件,我也不清楚。他它说能让我做一个给他它么?我考虑了一下,他的服务器都是有安装.NET框架的,那可以用.NET来使下~~!

Code
复制代码 代码如下:

private readonly Dictionary<string, bool> cache =
new Dictionary<string, bool>();

private readonly IniFile ini = new IniFile(SysUtil.GetMapPath("Task.ini"));
private bool _flag;
private string day;
private string fHour;
private string fWeek;
private string hour;
private Thread timeThread;


protected override void OnStart(string[] args)
{
Go();
}

protected override void OnStop()
{
StopThread();
}

/// <summary>
/// 执行
/// </summary>
public void Go()
{
day = DateTime.Now.ToString("yyyy-MM-dd");
fWeek = ini.IniReadValue("Task", "Week");
fHour = ini.IniReadValue("Task", "Hour");
RunThread();
}

/// <summary>
/// 执行线程
/// </summary>
private void RunThread()
{
//这里开始线程
_flag = true;
timeThread = new Thread(ThreadTimer);
timeThread.Priority = ThreadPriority.Lowest;//设置线程优先级降低系统资源占用
timeThread.Start();
}

/// <summary>
/// 停止线程
/// </summary>
private void StopThread()
{
_flag = false;
if (timeThread != null) timeThread.Abort();
}

/// <summary>
/// 线程方法
/// </summary>
public void ThreadTimer()
{
while (_flag)
{
Thread.Sleep(1000);//线程阻塞,这样可以降低系统资源占用
if (fWeek == "") //按天
{
RunBackup();
}
else
{
// 按周
if (WeekSwitch(fWeek) == DateUtil.getWeek(DateTime.Now) && WeekSwitch(fWeek) != "")
{
RunBackup();
}
}
}
}

/// <summary>
/// 数据库列表
/// </summary>
private DataTable GetTaskList()
{
DataSet ds = new DataSet();
ds.ReadXml(SysUtil.GetMapPath("Db.xml"));
return ds.Tables["DataSet"];
}

private void RunBackup()
{
day = DateTime.Now.ToString("yyyy-MM-dd");
hour = DateTime.Now.ToString("HH");
if (hour.Equals(fHour))
{
if (!cache.ContainsKey(day)) cache.Add(day, false);

if (fWeek != "" && cache[day] == false)
{
if (WeekSwitch(fWeek) == DateUtil.getWeek(DateTime.Parse(day)))
{
Console.Write("Execute");
//if (!File.Exists(SysUtil.GetMapPath("Db.xml"))) return;
//StartWork();
//cache[day] = true;
}
}
else
{
if (cache[day] == false)
{
Console.Write("Execute");
//if (!File.Exists(SysUtil.GetMapPath("Db.xml"))) return;
//StartWork();
//cache[day] = true;
}
}
}
}

到这里基本的任务已经完成,代码没有适当的优化。还有一个不完善的GUI管理工具。 
 http://xiazai.jb51.net/tools/system/Reboot(c#).rar

相关文章

最新评论