C#创建一个每30分钟运行一次代码的定时器循环?

时间:2013-04-26 16:49:55

标签: c# visual-studio .net-4.0 timer autosave

我想在我的C#程序中输入一个自动保存功能,该功能将在倒计时结束时运行一行代码,然后重新开始倒计时。它将运行我的SaveFile();函数。

我希望在用户首次保存/打开文档时启动此计时器,并在打开新文档时将其禁用。

4 个答案:

答案 0 :(得分:9)

您可以使用System.Timers Elapsed event上的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
}

不要忘记在需要时拨打timer.Start()

答案 1 :(得分:2)

您也可以使用DispatchTimer。这是一个每5分钟播放五个不同视频之一的片段。

        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();
    }

答案 2 :(得分:1)

您可以使用System.Timers.Timer。它还具有StopStart方法,因此您可以执行任何操作。

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
}

答案 3 :(得分:-6)

打开新窗口

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

制作数组

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

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

进行密码检查

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;
            }

检查长度

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

制作上限

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

降低

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

最后右三

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

显示中间人物

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();
    }

将字符转换为ASCII

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

显示差异

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

获取文件

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;
        }

计时器(在[Frm Load]中添加[timer1.Start();]

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