递减计数器

本文关键字:计数器 | 更新日期: 2023-09-27 18:16:00

我想知道如何制作一个递减计数器来取代计时器,因为计时器将从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);
        });
}

递减计数器

我可能不太清楚,但是只要程序中只有一个线程(并且没有其他线程),您就会使用这样的内容:

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

对于循环的每次迭代,您让线程"休眠"1000毫秒,即1秒。为此,您需要包含System。与using System.Threading线程。如果你在后台做一些事情,使用替代方法而不是Sleep,因为它会在指定的持续时间内锁定线程的执行。

编辑:

这是Thread.Sleep()方法的MSDN文档。如果我没理解错的话,这似乎和你想做的非常相似。

  1. 使用DispatcherTimer
  2. 设置间隔属性为1000(= 1秒)
  3. 创建一个代表你的倒计时的变量
  4. 创建一个tick事件,检查你的倒计时变量是否为零。如果为零=>停止计时器并执行操作。如果没有=>减少变量
  5. 启动定时器