class MyThread
{
private int executeInterval = 15;
public int ExecuteInterval
{
get { return this.executeInterval; }
set { this.executeInterval = value; }
}
private int checkFlagInterval = 1;
public int CheckFlagInterval
{
get { return this.checkFlagInterval; }
set
{
this.checkFlagInterval = value < 1 ? 1 : value;
this.checkFlagInterval = value > this.executeInterval ? this.executeInterval : value;
}
}
private bool flag = true;
public bool Flag
{
get { return this.flag; }
set { this.flag = value; }
}
public void Run()
{
int timeout = 0;
while (this.flag)
{
if ((timeout -= checkFlagInterval) < 1)
{
// do something
timeout = this.executeInterval;
}
Thread.Sleep(this.checkFlagInterval * 1000);
}
}
}
class Program
{
static void Main(string[] args)
{
MyThread myThread = new MyThread();
Thread thread = new Thread(new ThreadStart(myThread.Run));
thread.Start();
while (myThread.Flag)
{
myThread.Flag = Console.Read() != 'q';
}
}
}