同一程序中的多个计时器

时间:2014-09-19 02:46:44

标签: c# timer

我正在尝试制作一个程序,其中有两个定时器以不同的间隔运行。目前我有1个计时器工作正常,我需要另一个运行。我的第一个计时器的代码如下所示:

    private void startButton_Click(object sender, RoutedEventArgs e)
    {
        Random rand = new Random();
        int ranMin = rand.Next(1,24);
        int ranSec = rand.Next(0, 59);


        System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Interval = new TimeSpan(0, ranMin, ranSec);
        dispatcherTimer.Start();

        min.Content = ranMin;
        sec.Content = ranSec;

        openP();

    }

    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        **code for timer in here
    }

这很好用,但现在我需要另一个以1秒间隔运行不同代码的计时器,当我尝试通过将所有dispatcherTimer放入dispatcherTimer2来复制它时,我遇到了错误。

1 个答案:

答案 0 :(得分:4)

我不确定你在做什么(你应该发布错误),但以下内容适用于您提供的代码:

    private void startButton_Click(object sender, RoutedEventArgs e)
        {
            Random rand = new Random();
            int ranMin = rand.Next(1,24);
            int ranSec = rand.Next(0, 59);


            System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
            dispatcherTimer.Interval = new TimeSpan(0, ranMin, ranSec);
            dispatcherTimer.Start();

            // New timer
            System.Windows.Threading.DispatcherTimer dispatcherTimer2 = new System.Windows.Threading.DispatcherTimer();
            dispatcherTimer2.Tick += new EventHandler(dispatcherTimer2_Tick);
            dispatcherTimer2.Interval = new TimeSpan(0, 0, 1);
            dispatcherTimer2.Start();

            min.Content = ranMin;
            sec.Content = ranSec;

            openP();

        }

        private void dispatcherTimer_Tick(object sender, EventArgs e)
        {
            //code for timer in here
        }

        private void dispatcherTimer2_Tick(object sender, EventArgs e)
        {
           //code for timer2 in here
        }