c#一個(gè)定時(shí)重啟的小程序?qū)崿F(xiàn)代碼第2/2頁
更新時(shí)間:2008年09月20日 13:05:42 作者:
今天有個(gè)朋友找我問有沒有一些能像Windows一樣計(jì)劃任務(wù)重啟的軟件,我也不清楚。他它說能讓我做一個(gè)給他它么?我考慮了一下,他的服務(wù)器都是有安裝.NET框架的,那可以用.NET來使下~~!
Code
復(fù)制代碼 代碼如下:
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>
/// 執(zhí)行
/// </summary>
public void Go()
{
day = DateTime.Now.ToString("yyyy-MM-dd");
fWeek = ini.IniReadValue("Task", "Week");
fHour = ini.IniReadValue("Task", "Hour");
RunThread();
}
/// <summary>
/// 執(zhí)行線程
/// </summary>
private void RunThread()
{
//這里開始線程
_flag = true;
timeThread = new Thread(ThreadTimer);
timeThread.Priority = ThreadPriority.Lowest;//設(shè)置線程優(yōu)先級降低系統(tǒng)資源占用
timeThread.Start();
}
/// <summary>
/// 停止線程
/// </summary>
private void StopThread()
{
_flag = false;
if (timeThread != null) timeThread.Abort();
}
/// <summary>
/// 線程方法
/// </summary>
public void ThreadTimer()
{
while (_flag)
{
Thread.Sleep(1000);//線程阻塞,這樣可以降低系統(tǒng)資源占用
if (fWeek == "") //按天
{
RunBackup();
}
else
{
// 按周
if (WeekSwitch(fWeek) == DateUtil.getWeek(DateTime.Now) && WeekSwitch(fWeek) != "")
{
RunBackup();
}
}
}
}
/// <summary>
/// 數(shù)據(jù)庫列表
/// </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;
}
}
}
}
到這里基本的任務(wù)已經(jīng)完成,代碼沒有適當(dāng)?shù)膬?yōu)化。還有一個(gè)不完善的GUI管理工具。
http://xiazai.jb51.net/tools/system/Reboot(c#).rar
相關(guān)文章
C#實(shí)現(xiàn)簡單的Login窗口實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)簡單的Login窗口,實(shí)例分析了C#顯示及關(guān)閉登陸Login窗口的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-08-08
C#獲得程序的根目錄以及判斷文件是否存在的實(shí)例講解
今天小編大家分享一篇C#獲得程序的根目錄以及判斷文件是否存在的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
C#基于正則表達(dá)式抓取a標(biāo)簽鏈接和innerhtml的方法
這篇文章主要介紹了C#基于正則表達(dá)式抓取a標(biāo)簽鏈接和innerhtml的方法,結(jié)合實(shí)例形式分析了C#使用正則表達(dá)式進(jìn)行頁面元素的匹配與抓取相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
C# 二進(jìn)制數(shù)組與結(jié)構(gòu)體的互轉(zhuǎn)方法
本文將和大家介紹 MemoryMarshal 輔助類,通過這個(gè)輔助類用來實(shí)現(xiàn)結(jié)構(gòu)體數(shù)組和二進(jìn)制數(shù)組的相互轉(zhuǎn)換,對C# 二進(jìn)制數(shù)組與結(jié)構(gòu)體的互轉(zhuǎn)方法感興趣的朋友一起看看吧2023-09-09
C#值類型、引用類型中的Equals和==的區(qū)別淺析
這篇文章主要介紹了C#值類型、引用類型中的Equals和==的區(qū)別淺析,本文分別對C#值類型和引用類型中的Equals和==做了講解和給出了實(shí)例,需要的朋友可以參考下2015-01-01
教你創(chuàng)建一個(gè)帶診斷工具的.NET鏡像
本文編寫的初衷是因?yàn)樵谌豪镉泻芏嘈』锇橛龅缴a(chǎn)環(huán)境性能問題的時(shí)候,.NET的runtime鏡像中沒有帶一些工具,安裝和使用起來很麻煩,所以分享一些我們公司內(nèi)部一些技巧,對.NET鏡像帶診斷工具相關(guān)知識(shí)感興趣的朋友一起看看吧2022-07-07
C#?網(wǎng)域賬號(Domain)驗(yàn)證的實(shí)現(xiàn)
本文主要介紹了C#?網(wǎng)域賬號(Domain)驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04
c#菜單動(dòng)態(tài)合并的實(shí)現(xiàn)方法
這篇文章主要介紹了c#菜單動(dòng)態(tài)合并的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
listview控件實(shí)現(xiàn)點(diǎn)擊列表頭進(jìn)行l(wèi)istview排序示例分享
這篇文章主要介紹了listview控件實(shí)現(xiàn)點(diǎn)擊列表頭進(jìn)行l(wèi)istview排序示例分享,需要的朋友可以參考下2014-03-03

