0

我已经将我的代码修改为它将执行的点,但它链接到一个计时器,并且会尝试一遍又一遍地执行,直到失去计时条件。我尝试使用我命名为“intLimiter”的变量在系统上放置“锁”,以强制序列在一次执行后停止,但锁似乎不起作用。

if (DateTime.Now.Hour == intAlarmHour && DateTime.Now.Minute == intAlarmMinute)
{
    if (intLimiter == 1)                    
    {
        intLimiter = 2;
        if (radTG.Checked)
        {
            System.Media.SoundPlayer sound = new System.Media.SoundPlayer(Properties.Resources.Celldweller___Tough_Guy);
            sound.Play();                       
        }
               ...
    }
}
4

1 回答 1

1

根据我从您的问题中了解到的情况,您希望将 if 语句分开以同时工作......您可以做的是为每个语句创建新的“线程”,这将使您能够在那时运行所有一次...

对于线程,请确保包含命名空间 System.Threading。

using System.Threading;

现在你应该用你的代码做什么:

...

if (DateTime.Now.Hour == intAlarmHour && DateTime.Now.Minute == intAlarmMinute)
{


    if (radTG.Checked == true)
    {
        Thread radTG = new Thread(radTGChecked);
        radTG.Start();
    }
    ...
}

...

public void radTGChecked() {
    SoundPlayer sound = new SoundPlayer(Properties.Resources.Celldweller);
    sound.PlaySync();
}

对下面的所有 if 语句执行此操作,它们将一起运行,每个都在一个线程上......如果这不是您问题的答案,请原谅我,但与内容对应的标题对我来说确实有点模糊。 .. 但如果确实如此,这里有一篇文章将帮助您了解多线程。

于 2013-11-04T07:41:34.643 回答