C# 递减计数器
我想知道如何制作一个递减计数器来替换计时器,就像计时器从3开始,每秒钟递减一次,直到达到零,在那里它将执行一个动作。有什么帮助吗C# 递减计数器,c#,wpf,counter,C#,Wpf,Counter,我想知道如何制作一个递减计数器来替换计时器,就像计时器从3开始,每秒钟递减一次,直到达到零,在那里它将执行一个动作。有什么帮助吗 // Change Image from "Hut" to Mole \\ private void ChangeImage() { Image newImage = HoleImage(); molePopup = MoleImage(); int numCol = Convert.ToInt32(NumberOfCo
// 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.Threading将System.Threading包含在中。如果您在后台执行某些操作,请使用其他方法而不是Sleep,因为它会在指定的持续时间内锁定线程执行
编辑:
是Thread.Sleep()
方法的MSDN文档。如果我没弄错你的意思的话,看起来和你想做的很相似
使用
将interval属性设置为1000(=1秒)
创建一个表示倒计时计时器的变量
创建一个勾号事件,检查倒计时变量是否为零。如果为零=>停止计时器并执行操作。如果不是=>减少变量
启动计时器
保存一个每秒递增的变量,从计数器开始值中减去该变量,如果该值为0,则执行操作?我看不出这里有什么问题。@xmashallax很抱歉我是C#新手,如果可以,你能给我举个例子吗?代码示例与计时器有什么关系?使用计时器有什么问题吗?谢谢,但我已经尝试过使用Sleep函数,结果不太好。它冻结了整个程序,在设置它的时候,我还有很多其他后台进程同时运行。Thread.Sleep()基本上就是这样做的。你到底想干什么?输出一个倒计时?为什么你不能使用一个调度程序(在删除的答案中提到)?所以,我正在做一个打鼹鼠游戏,我需要能够显示一个鼹鼠的图像,然后放置一个鼹鼠洞的图像。计数器会说,“等几秒钟,然后把鼹鼠洞放在那里”,但我不能使用调度计时器,因为使用睡眠功能作为延迟使程序完全停止。