课程事件触发主程序中的操作

时间:2013-08-13 21:40:24

标签: c# class

我已成功使用此question中所述的解决方案。

我现在想要重用几种不同形式的Timer方法,并且一直在尝试创建一个类,以便将各种形式的方法数量保持在最低限度。但是我对编程和使用类和事件相当新,并且不认为我正在接近这个。

到目前为止我的课程是以下。在我的课程中可以和事件在主程序中触发和事件吗?我是否应该使用课程?

using System;
using System.Timers;

namespace TMP_ERP
{
    class Timer
    {
        int MilliSeconds;
        System.Windows.Forms.Timer queryTimer;

        public Timer()
        {
        }


        //Revokes the timer if not already revoked
        public void RevokeQueryTimer()
        {
            if (queryTimer != null)
            {
                queryTimer.Stop();
                queryTimer.Tick -= queryTimer_Tick;
                queryTimer = null;
            }
        }

        public void RestartQueryTimer()
        {
            //start or reset a pending query
            if (queryTimer == null)
            {
                queryTimer = new System.Windows.Forms.Timer { Enabled = true, Interval     = 1500 };
                queryTimer.Tick += queryTimer_Tick;
            }

            else
            {
                queryTimer.Stop();
                queryTimer.Start();
            }
        }

        void queryTimer_Tick(object sender, EventArgs e)
        {
            //Tells Main Program to do something?
        }
    }
}

每当有人输入一个角色,我都会叫RestartQueryTimer()。如果QueryTimer滴答比我查询数据库然后调用RevokeQueryTimer()删除计时器。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以拥有的最佳示例是您已经在Timer中使用的计时器的接口--System.Windows.Forms.Timer。提供一个事件来完全按照内部计时器的要求通知您的班级客户。