【问题标题】:Decreasing Counter递减计数器
【发布时间】:2013-05-28 23:43:22
【问题描述】:

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

【问题讨论】:

  • 保存一个每秒增加的变量,从计数器起始值中减去这个变量,如果为0,执行你的操作?我没有看到这里的问题。
  • @xmashallax 对不起,我是 C# 新手,如果可以的话,你能给我举个例子吗?
  • 代码示例与定时器有何关系?使用计时器有什么问题?

标签: c# wpf counter


【解决方案1】:

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

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

doWhatever();

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

编辑:

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

【讨论】:

  • 谢谢,但我已经尝试过使用睡眠功能,但效果不佳。
  • 它冻结了整个程序,在它设置的时间内,我还有很多其他后台进程同时运行。
  • 这基本上就是 Thread.Sleep() 所做的。你到底想做什么?也输出倒计时?
  • 您为什么不能使用 DispatcherTimer(如已删除答案中所述)?
  • 所以,我正在制作一个打鼹鼠游戏,我需要能够显示一个痣的图像,然后放一个鼹鼠孔的图像。计数器会说,“等几秒钟,然后把鼹鼠洞放在那里”,但我不能使用调度程序计时器,因为使用睡眠功能作为延迟会使程序完全停止。
【解决方案2】:
  1. 使用DispatcherTimer
  2. 将时间间隔属性设置为 1000(= 1 秒)
  3. 创建一个表示倒数计时器的变量
  4. 创建一个刻度事件,您可以在其中检查倒计时变量是否为零。如果为零 => 停止计时器并执行操作。如果不是 => 减少变量
  5. 启动计时器

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多