У тебя есть цикл. Он выполняется, и надо сделать так, чтобы он не выполнялся например 30 секунд с момента последнего выполнения. Если так, то вот код:
using System;
using System.IO;
using System.Globalization;
namespace sharis
{
class Program
{
public static string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\datetime";
public static DateTime last;
public static bool work = false;
public static TimeSpan time = new TimeSpan(0, 0, 30);
public static void Main(string[] args)
{
while(true)
{
if(File.Exists(path))
{
last = DateTime.Parse(File.ReadAllText(path));
if(DateTime.Now.Subtract(last) >= time)
work = true;
}
else
work = true;
for(int i = 21; i >= 0 && work; i -= 7)
{
if(i != 7)
Console.WriteLine(i);
else
{
last = DateTime.Now;
File.WriteAllText(path, last.ToString());
}
}
Console.ReadKey(true);
}
}
}
}
Надеюсь помог.
UPD: Поместил изменение времени последнего запуска в цикл.