csharp
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
namespace 倒计时
{
class Program
{
static Timer timer = new Timer();
static DateTime endTime;
static string fileName = "countdown.txt";
static void Main(string[] args)
{
LoadCountdown(); // 读取倒计时信息
// 设置计时器
timer.Interval = 1000; // 每秒触发一次
timer.Elapsed += Timer_Elapsed;
timer.Enabled = true;
Console.WriteLine("倒计时开始,将在{0}结束。", endTime);
Console.ReadLine();
}
static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
TimeSpan duration = endTime - DateTime.Now; // 计算时间差
if (duration.TotalSeconds <= 0) // 时间到了
{
timer.Enabled = false; // 停止计时器
Console.WriteLine("时间到了!");
SaveCountdown(DateTime.MinValue); // 清除倒计时信息
}
else // 显示剩余时间
{
Console.WriteLine("剩余时间:{0}小时{1}分钟{2}秒", (int)duration.TotalHours, (int)duration.TotalMinutes % 60, (int)duration.TotalSeconds % 60);
SaveCountdown(endTime); // 保存倒计时信息
}
}
static void LoadCountdown()
{
if (File.Exists(fileName)) // 文件存在
{
string content = File.ReadAllText(fileName); // 读取文件内容
if (!string.IsNullOrEmpty(content)) // 文件内容不为空
{
DateTime savedTime = DateTime.Parse(content); // 解析保存的时间
TimeSpan duration = savedTime - DateTime.Now; // 计算时间差
if (duration.TotalSeconds > 0) // 时间还没到
{
endTime = savedTime; // 恢复结束时间
return;
}
}
}
// 文件不存在或者时间已经到了,重新开始倒计时
DateTime startTime = DateTime.Now;
endTime = startTime.AddMinutes(20);
}
static void SaveCountdown(DateTime time)
{
File.WriteAllText(fileName, time.ToString()); // 保存时间到文件
}
}
}