Um.
If you want to autosave every five minutes, I'd do it rather more simply.
Set up a Thread and start it.
private Thread saver;
...
saver = new Thread(new ThreadStart(SaveRegularly));
saver.Start();
The thread method soes teh save:
private bool stopAndDie = false;
private void SaveRegularly()
{
DateTime saveDueAt = DateTime.Now.AddMinutes(5);
do
{
Thread.Sleep(1000);
if (DateTime.Now >= saveDueAt)
{
...
saveDueAt = DateTime.Now.AddMinutes(5);
}
} while (!stopAndDie);
}
You also handle the form closing event, and set stopAndDie to true, then use Thread.Join to wait for it to exit:
stopAndDie = true;
saver.Join(2000);