使用 C# 实现两个或多个具有不同间隔的计时器

发布于 2024-08-24 18:35:35 字数 188 浏览 6 评论 0原文

我必须有一个给出间隔的数据库条目,

假设 1 个计时器 tm_5 将每 5 分钟后检查一次条目计时器 tm_10 将

每 10 分钟检查一次条目,

问题是它仅检查 tm_5 的条目,而不检查 tm_10 的条目。

我正在使用 C#.net 2005 &微软 SQL Server 2005。

I have to a d.b entry in which the intervals are given,

Suppose 1 timer tm_5 will check the entries after every 5 mins & the timer tm_10 will check

the entries after every 10 mins,

The problem is that it checks only the entries for tm_5 not for the tm_10.

I am using C#.net 2005 & MS sql server 2005.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

歌入人心 2024-08-31 18:35:35

试试这个(添加 label1 和 label2 以命名为 TimerTester)。

public partial class TimerTester : Form
{
    public TimerTester()
    {
        InitializeComponent();
    }
    Timer _t1;
    Timer _t2;
    int _it1 = 0, _it2 = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
        _t1 = new Timer() { Interval = 1000 };            
        _t1.Tick += new EventHandler(_t1_Tick);
        _t2 = new Timer() { Interval = 2000 };
        _t2.Tick += new EventHandler(_t2_Tick);
        _t1.Start(); _t2.Start();
    }
    void _t1_Tick(object sender, EventArgs e)
    {
        label1.Text = "t1: " + (_it1++).ToString();
    }
    void _t2_Tick(object sender, EventArgs e)
    {
        label2.Text = "t2: " + (_it2++).ToString();
    }        
}

另请注意,您应该使用 Forms.Timer 而不是 Threads.Timer (或使用 InvokeRequired 并阅读并理解它的含义)。

Try this (add label1 and label2 to form named TimerTester).

public partial class TimerTester : Form
{
    public TimerTester()
    {
        InitializeComponent();
    }
    Timer _t1;
    Timer _t2;
    int _it1 = 0, _it2 = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
        _t1 = new Timer() { Interval = 1000 };            
        _t1.Tick += new EventHandler(_t1_Tick);
        _t2 = new Timer() { Interval = 2000 };
        _t2.Tick += new EventHandler(_t2_Tick);
        _t1.Start(); _t2.Start();
    }
    void _t1_Tick(object sender, EventArgs e)
    {
        label1.Text = "t1: " + (_it1++).ToString();
    }
    void _t2_Tick(object sender, EventArgs e)
    {
        label2.Text = "t2: " + (_it2++).ToString();
    }        
}

Also note that you should use Forms.Timer and not Threads.Timer (or use InvokeRequired and read & understand what it implicates).

想你只要分分秒秒 2024-08-31 18:35:35

您应该更改 UI 线程中标签的文本,以便此代码能够工作。请参阅 Control.Invoke 和 Control.InvokeRequired 获取帮助。

You should change the text of the label in the UI thread so this code will work. See Control.Invoke and Control.InvokeRequired for help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文