a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

c#一個定時重啟的小程序實現代碼第1/2頁

2020-01-24 03:47:27
字體:
來源:轉載
供稿:網友
原理我像大家都很清楚,這里只說.NET(c#實現)。服務器每次啟動或者重啟,都是沒登陸的。那意味著啟動項里不只能做,我就考慮到使用Windows服務。Windows服務在系統加載時候就會啟動所有服務,把程序寫進里面應該沒錯了。
需要重啟,那就要一個時間來效驗,寫法都有很多。我這里采用ini來存放。
Time 記錄要重啟的時間,驗證時間。
Day 用來累加天數。
復制代碼 代碼如下:

[Reboot]
Time=02:02:01
Day=3


使用System.Timers.Timer循環驗證時間(不知道始終對占用資源是否會太大)
復制代碼 代碼如下:

private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") == retime)
{
Shoutdown.DoExitWin(0x00000002);
}
}


服務首次啟動初始化重啟的時間以及天數,初始化時候讀取ini文件,把時間放進變量里,將天數累加3天。(減少讀寫I/O的開銷)
始終不停的循環驗證。
復制代碼 代碼如下:

protected override void OnStart(string[] args)
{
ini = new IniFile(AppDomain.CurrentDomain.BaseDirectory + "Current.ini");
time = ini.IniReadValue("Reboot", "Time");
day = ini.IniReadValue("Reboot", "Day");

retime = DateTime.Now.AddDays(double.Parse(day)).ToString("yyyy-MM-dd ") + time;

autoTimer.AutoReset = true;
autoTimer.Enabled = true;
autoTimer.Elapsed += Timer_Elapsed;
autoTimer.Start();
}


這里可以改造成用線程來做,我想應該比這個會好。

放出一段自動備份SQLSERVER的代碼端,將后會發布。
復制代碼 代碼如下:

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.Start();
}

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

/// <summary>
/// 線程方法
/// </summary>
public void ThreadTimer()
{
while (_flag)
{
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()
{
if (!File.Exists(SysUtil.GetMapPath("Db.xml"))) return;

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)))
{
StartWork();
cache[day] = true;
}
}
else
{
if (cache[day] == false)
{
StartWork();
cache[day] = true;
}
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日产精品久久久一区二区 | 超黄视频在线观看 | 国产不卡一二三区 | 精品一区二区三区中文字幕 | 久久久久99| 午夜免费看片 | 黄色毛片在线看 | 亚洲精品色 | 一本一本久久a久久精品牛牛影视 | 国产一区二区三区四区五区 | 高清av在线 | 成人精品一区二区三区 | 久热伊人| 亚洲精品美女久久 | 国产真实乱全部视频 | 国产第99页 | 成人a网 | 男人的天堂久久 | 黄色大片视频 | 免费观看一级特黄欧美大片 | 国产一区二区三区久久99 | 噜噜噜噜狠狠狠7777视频 | 日韩福利在线 | 伊人在线| 99精品欧美一区二区三区 | 99精品免费观看 | 狠狠爱www人成狠狠爱综合网 | 98久久久 | 天堂va蜜桃一区二区三区 | 在线区| 亚洲手机在线观看 | 亚洲日本二区 | 国产精品成人在线观看 | 国产中文字幕一区 | 狠狠色伊人亚洲综合成人 | 国内久久 | 国产一区免费在线观看 | 日本中文字幕在线播放 | 久久久久久久一区 | 青青草久久爱 | 日韩在线精品视频 |