减少柜台

时间:2013-05-28 23:43:23

标签: c# wpf counter

我想知道如何使用减少计数器来替换计时器,因为计时器将从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);
        });
}

2 个答案:

答案 0 :(得分:0)

我可能不清楚,但只要你在程序中只有一个线程(否则没有其他任何东西),你会使用这样的东西:

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

doWhatever();

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

编辑:

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

答案 1 :(得分:0)

  1. 使用DispatcherTimer
  2. 将interval属性设置为1000(= 1秒)
  3. 创建一个代表倒数计时器的变量
  4. 创建一个tick事件,您可以在其中检查倒计时变量是否为零。如果是零=>停止计时器并执行操作。如果不是=>减少变量
  5. 启动计时器