Toby
Toby

Reputation: 377

C# create a timer loop which runs code every 30 minutes?

I would like to input an autosave feature in my C# program which will run a line of code at the end of the countdown, then restart the countdown. It will run my SaveFile(); function.

I would like this timer to be started when the user first saves/opens the document, and have it disabled if they open a new document.

Upvotes: 7

Views: 35332

Answers (4)

Pierre-Luc Pineault
Pierre-Luc Pineault

Reputation: 9201

You can use the Elapsed event on the System.Timers Timer.

Timer timer = new Timer(30 * 60 * 1000);
timer.Elapsed += OnTick; // Which can also be written as += new ElapsedEventHandler(OnTick);


private void OnTick(object source, ElapsedEventArgs e)
{ 
    //Save logic
}

And don't forget to call timer.Start() when you need it.

Upvotes: 10

Dave
Dave

Reputation: 1

Opening New Window

 FrmCupsToOunces MyNewForm = new FrmCupsToOunces();
        MyNewForm.Show();

Making Array

const int QUARTERS = 4;
        const int DIVISIONS = 3;

        double[,] stats = new double[DIVISIONS, QUARTERS];

Making Password Check

int InNumTry = 0;
    private void BtnGo_Click_1(object sender, EventArgs e)
    {
        string password;
        password = TxtIn.Text;

            switch (password)
            {
                case " ": MessageBox.Show("Passowrd is empty.");
                    break;

                case "MIKE": MessageBox.Show("Password is OK!");
                    FrmBOO newForm = new FrmBOO();
                    newForm.Show();
                    break;

                default:
                    InNumTry++;
                    MessageBox.Show("Invalid Passwrod, try again!");
                    TxtIn.Text = "";
                    TxtIn.Focus();
                    break;
            }

Check Length

LblLength.Text = TxtInput.Text.Length.ToString();

Make To Upper

LblUpper.Text = TxtInput.Text.ToUpper();

Make To Lower

LblLower.Text = TxtInput.Text.ToLower();

Last Right Three

LblRight.Text = TxtInput.Text.Substring(TxtInput.Text.Length - 3);

Show Middle Characters

LblSubscript.Text = TxtInput.Text.Substring(1, 3);

ASCII

private void btnascii_Click(object sender, EventArgs e)
    {
        string assqui;
        int num;
        num = Convert.ToInt32(txtinput.Text);
        assqui = char.ConvertFromUtf32(num);
        lblascii.Text = assqui.ToString();
    }

CONVERT A CHARACTER TO ASCII

        string assqui;
        int num;
        num = Convert.ToInt32(textBox1.Text);
        assqui= char.ConvertFromUtf32(num);
        lblout.Text = assqui.ToString();

Show Difference

 string name;
        name = txtinput.Text;
        foreach (char letter in name)
        {
            MessageBox.Show(letter.ToString());
        }

Get File

private void BtnGetFile_Click(object sender, EventArgs e)
    {
        string Line;
        int count = 0;

        try
        {
            StreamReader ReadFile;

            StringFileName = Interaction.InputBox(" Please Enter Your Desired File Name \n You do not need to place the '.txt' at the end of the file name.") + ".txt";

            ReadFile = File.OpenText(StringFileName);

            LbSongs.Items.Clear();

            while (!ReadFile.EndOfStream)
            {
                Line = ReadFile.ReadLine();
                string[] words = Line.Split(',');

                ListSongs[count].NameOfSong = words[0];
                ListSongs[count].NameOfArtist = words[1];
                ListSongs[count].NameOfFile = words[2];
                ListSongs[count].ThisWeekRank = words[3];
                ListSongs[count].MostWeekRank = words[4];
                ListSongs[count].LastWeekRank = words[5];

                LbSongs.Items.Add(ListSongs[count].NameOfSong);

                count++;
            }

            LbSongs.SelectedIndex = 0;
            Show();
            ReadFile.Close();
        }
        catch
        {
            MessageBox.Show("The file you are trying to access either, can not be found or opened");
        }

    }
    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void infoToolStripMenuItem_Click(object sender, EventArgs e)
    {
        MessageBox.Show("The Program was created by Konrad Lazarek.\n\nOn April 16st, 2014.\n\nVersion: 00:03:48:59",
        "Info On This Program",
        MessageBoxButtons.OK,
        MessageBoxIcon.Information,
        MessageBoxDefaultButton.Button1);
    }

    private void BTF(int index)
    {
        switch (ListSongs[index].NameOfSong)
        {
            case "Happy":
                HidePictures();
                PicHappy.Visible = true;
                break;
            case "All Of Me":
                HidePictures();
                PicAllOfMe.Visible = true;
                break;
            case "Dark Horse":
                HidePictures();
                PicDarkHorse.Visible = true;
                break;
            case "Talk Dirty":
                HidePictures();
                PicTalkDirty.Visible = true;
                break;
            case "Let It Go":
                HidePictures();
                PicLetItGo.Visible = true;
                break;
            case "Pompeii":
                HidePictures();
                PicPompeii.Visible = true;
                break;
            case "Team":
                HidePictures();
                PicTeam.Visible = true;
                break;
            case "Counting Stars":
                HidePictures();
                PicCountingStars.Visible = true;
                break;
            case "The Man":
                HidePictures();
                PicTheMan.Visible = true;
                break;
            case "Turn Down For What":
                HidePictures();
                PicTurnDownForWhat.Visible = true;
                break;
        }
    }

private void LbSongs_SelectedIndexChanged(object sender, EventArgs e)
        {
            IntSelInd = LbSongs.SelectedIndex;

            LblThisWeek.Text = ListSongs[IntSelInd].LastWeekRank;
            LblMostWeek.Text = ListSongs[IntSelInd].MostWeekRank;
            LblLastWeek.Text = ListSongs[IntSelInd].LastWeekRank;
            LblArtist.Text = ListSongs[IntSelInd].NameOfArtist;

            BTF(IntSelInd);

            axWindowsMediaPlayer1.URL = @ListSongs[IntSelInd].NameOfFile;
        }

Timer (Add [timer1.Start();] In Frm Load)

DateTime datetime = DateTime.Now;
        this.LblTime.Text = datetime.ToString();

Upvotes: -8

Geoff Murtaugh
Geoff Murtaugh

Reputation: 21

You can also use DispatchTimer. Here's a snippet that plays one of five different videos every 5 minutes.

        DispatcherTimer mediaTimer = new DispatcherTimer();
        mediaTimer.Interval = TimeSpan.FromMinutes(5);
        mediaTimer.Tick += new EventHandler(mediaTimer_Tick);
        mediaTimer.Start();

    void mediaTimer_Tick(object sender, EventArgs e)
    {
        nextMovie();
    }

    public void nextMovie()
    {
        if (mediaIndex >= 5)
            mediaIndex = 0;

        switch (mediaIndex)
        {
            case 0:
                mediaElement1.Source = new Uri(videoFileName1, UriKind.Absolute);
                break;
            case 1:
                mediaElement1.Source = new Uri(videoFileName2, UriKind.Absolute);
                break;
            case 2:
                mediaElement1.Source = new Uri(videoFileName3, UriKind.Absolute);
                break;
            case 3:
                mediaElement1.Source = new Uri(videoFileName4, UriKind.Absolute);
                break;
            case 4:
                mediaElement1.Source = new Uri(videoFileName5, UriKind.Absolute);
                break;
            default:
                mediaElement1.Source = new Uri(videoFileName1, UriKind.Absolute);
                break;

        }

        mediaElement1.Visibility = System.Windows.Visibility.Visible;
        mediaIndex++;
        mediaElement1.Play();
    }

Upvotes: 2

Hossein Narimani Rad
Hossein Narimani Rad

Reputation: 32481

You can use System.Timers.Timer. It also has Stop and Start methods so you can do whatever you want.

System.Timers.Timer myTimer = new Timer(30 * 60 * 1000);
myTimer.Start();
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);


void myTimer_Elapsed(object sender, ElapsedEventArgs e)
{
    //your code
}

Upvotes: 1

Related Questions