如何让我的TimerAction工作? (Windows窗体应用程序)

时间:2014-05-03 21:16:38

标签: c# winforms timer

我在Windows Forms应用程序中工作,我需要使用计时器。 我有这个方法来设置计时器,以便在某个时间做某事:

      private void SetTimerValue()
    {
        // trigger the event at 7 AM. For 7 PM use 19 i.e. 24 hour format

       // Console.Read();
        DateTime requiredTime = DateTime.Today.AddHours(7).AddMinutes(00);
        if (DateTime.Now > requiredTime)
        {
            requiredTime = requiredTime.AddDays(1);
        }

        // initialize timer only, do not specify the start time or the interval
        myTimer = new System.Threading.Timer(new TimerCallback(TimerAction));
        // first parameter is the start time and the second parameter is the interval
        // Timeout.Infinite means do not repeat the interval, only start the timer
        myTimer.Change((int)(requiredTime - DateTime.Now).TotalMilliseconds, Timeout.Infinite);
    }

这就是TimerAction:

     private void TimerAction(object e)
    {


            // do some work with my webcam(start recording)
            // now, call the set timer method to reset its next call time
    SetTimerValue();
    }

我在我的表单(Form1)中调用SetTimerValue():

     public Form1()
    {
        InitializeComponent();


        SetTimerValue();


    } 

但是在我运行应用程序和计时器到达他的时间后,应用程序关闭。 我的TimerAction方法和参数(对象e)是什么?

TimerAction的相同操作我在button1_Click_1(对象发送者,EventArgs e)中使用它并且它有效。 你能帮助我吗? 感谢

1 个答案:

答案 0 :(得分:0)

您需要使用right timer,即将在UI线程上执行的那个。