0

我想知道如何制作一个递减计数器来替换计时器,因为计时器将从 3 开始,每秒递减一次,直到达到零,它会执行一个动作。有什么帮助吗?

// Change Image from "Hut" to Mole \\
private void ChangeImage()
{
        Image newImage = HoleImage();
        molePopup = MoleImage();
        int numCol = Convert.ToInt32(NumberOfColumns);
        //Random Number - Col
        Random randomColumns = new Random();
        int ranCol = randomColumns.Next(1, numCol);
        //Random Number - Row
        Random randomRow = new Random();
        int ranRow = randomRow.Next(1, NumberofRows);
        string Moleimage = TUtils.GetIniFileString(Moleini, "ImagePath", "PictureFile", Root + "mole2.png");
        //Populate Grid with Mole at Random Times \\
        Grid.SetRow(molePopup, ranRow);
        Grid.SetColumn(molePopup, ranCol);
        grid_Main.Children.Add(molePopup);

        molePopup.MouseUp += new MouseButtonEventHandler((o, e) =>
        {
            MolePoints++;
            grid_Main.Children.Remove(molePopup);
        });
}
4

2 回答 2

0
  1. 使用DispatcherTimer
  2. 将间隔属性设置为 1000(= 1 秒)
  3. 创建一个表示倒数计时器的变量
  4. 创建一个刻度事件,您可以在其中检查倒计时变量是否为零。如果为零 => 停止计时器并执行操作。如果不是 => 减少变量
  5. 启动计时器
于 2013-05-29T00:09:23.640 回答
0

我可能不清楚,但只要你在程序中只有一个线程(否则什么都不会发生),你会使用这样的东西:

for(int i = 3; i > 0; i--)
{
    Thread.Sleep(1000);
}

doWhatever();

对于循环的每次迭代,您将线程“休眠”1000 毫秒或 1 秒。为此,您需要将 System.Threading 与using System.Threading. 如果您在后台执行某些操作,请使用替代方法而不是 Sleep,因为它会在指定的持续时间内锁定线程执行。

编辑:

Thread.Sleep()方法的 MSDN 文档。如果我正确理解您的意思,似乎与您想要做的事情非常相似。

于 2013-05-28T23:52:49.037 回答