C# stopwatch的问题 C#stopwatch 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改成这样试试 stopwatch.Reset(); stopwatch.Start(); stopwatch是用来实现高精度计时的lz这么用是想实现什么功能?如果只是实现个循环功能,放到timer中不是更方便 晕到底是代码跳出了for循环,不继续执行还是stopwatch无法实现计时? @xian_wwq 用Timer实在是不会..我还在试@Z65443344其实想实现的就是每隔一段时间两个picturebox的图片替换,类似相册的功能。然后这个间隔的时间 Time Interval其实是不相同的,我上面用的循环就是我已经把间隔的时间也在一个数组里面了,可以直接在循环中调用。现在的话这样循环,picturebox不会一个一个替换显示。 其实想实现的就是每隔一段时间两个picturebox的图片替换,类似相册的功能。然后这个间隔的时间 Time Interval其实是不相同的,我上面用的循环就是我已经把间隔的时间也在一个数组里面了,可以直接在循环中调用。现在的话这样循环,picturebox不会一个一个替换显示。 用Timer实在是不会..我还在试你可以看下这个,哈哈: http://bbs.csdn.net/topics/390967304 for (int index = 1; index < timeNum; index++) { var stopwatch = Stopwatch.StartNew(); stopwatch.Restart(); //MessageBox.Show(“test”); Thread.Sleep(5000); pictureBox1.Image = list1[index * 2]; pictureBox2.Image = list1[index * 2 + 1]; stopwatch.Stop(); }我认为你的申明要放在循环里面。 应该给个 休眠时间吧? Thread.Sleep(5000); 否则不是不执行而是执行得的太快, 把你的代码改成如下所示,图片就能交叉替换显示了。 private void button3_Click(object sender, EventArgs e) { var stopwatch = Stopwatch.StartNew(); for (int index = 1; index < timeNum; index++) { stopwatch.Restart(); Thread.Sleep(5000); pictureBox1.Image = list1[index * 2]; Thread.Sleep(5000); pictureBox2.Image = list1[index * 2 + 1]; stopwatch.Stop(); }} 要加Thread.Sleep(5000);,不然太快,没有效果 仅仅是实现定时替换,跟stopwatch有一毛钱关系??stopwatch是用来检测代码执行时间的不是定时器啊 用Timer实在是不会..我还在试你可以看下这个,哈哈: http://bbs.csdn.net/topics/390967304不会用,就去学,而不是因为不会用,所以就不用好比你想给花翻翻土,浇浇水,你需要铲子和水壶.没有的话用叉子和饭碗也行,还没有用筷子和瓶子也行如果你非要用鼠标翻土,用键盘浇水,那是自己找不自在 用Timer实在是不会..我还在试你可以看下这个,哈哈: http://bbs.csdn.net/topics/390967304不会用,就去学,而不是因为不会用,所以就不用好比你想给花翻翻土,浇浇水,你需要铲子和水壶.没有的话用叉子和饭碗也行,还没有用筷子和瓶子也行如果你非要用鼠标翻土,用键盘浇水,那是自己找不自在顶 两个图片替换关stopwatch什么事,这个是计时器,你应该用的是定时器Timer 执行循环和替换图片都是同一个线程干的活, 如果在循环里转不出去, 图片切换是没人去干的.当 MessageBox 显示的时候, 这个线程才可以抽空显示图片.最好的办法就是用 Timer , 可以设一个比较小的间隔(最好是Time Interval的最大公约数),每次执行的时候计算当前应该显示哪幅图, 如果需要切换了就切换. public int sec = 0;private void button3_Click(object sender, EventArgs e) { for (int i = 0; i < 4; i++) { MessageBox.Show("test"); sec = 0; timer1.Enabled = true; timer1.Start(); } }private void timer1_Tick(object sender, EventArgs e) { sec++; if(sec==5000) { pictureBox1.Image = list[3]; pictureBox2.Image = list[4]; timer1.Enabled = false; timer1.Stop(); } } 问题是: MessageBox.Show("test");这个连续弹出来,for循环,timer1_Tick貌似不起作用只执行了一次,用的是system.window.forms下面的timer,是不是要在Tick事件中做什么判断再跳转出来?谢谢大家如上回复 有看到说,“使用timer.Enabled属性用于设置是否启用定时器。timer1.Stop();方法是用于停止计时。” 那就是要把判断的逻辑放到Tick事件中感觉,我再试试看~ for (int i = 1; i <= timeNum; i++) { //MessageBox.Show("test"); Thread.Sleep(Convert.ToInt32(arrTime[i-1])); pictureBox1.Image = list1[i*2]; pictureBox2.Image = list1[i*2+1]; pictureBox1.Refresh(); pictureBox2.Refresh(); } 有用c#做过wml进来看看 C# 获取上下文菜单项文本 winform水晶报表打印多张订单 c#.net 急!!! vs2008怎么运行一个类 如何在Microsoft.Data.ConnectionUI界面里添加MySQL数据库? 一个编程新手的问题,请高手们给解决一下 菜鸟求助如何实现IP和掩码的与运算? 请C#大虾们指点 c# List<> 装载对象可否混装子类和父类对象 动软生成的 AccountsPrincipal.ValidateLogin(userName, Password)这个是怎么使用的 system.timers.timer 自动停掉了某个线程
stopwatch.Reset();
stopwatch.Start();
lz这么用是想实现什么功能?
如果只是实现个循环功能,放到timer中不是更方便
到底是代码跳出了for循环,不继续执行
还是
stopwatch无法实现计时?
用Timer实在是不会..我还在试@Z65443344
其实想实现的就是每隔一段时间两个picturebox的图片替换,类似相册的功能。
然后这个间隔的时间 Time Interval其实是不相同的,我上面用的循环就是我已经把间隔的时间也在一个数组里面了,可以直接在循环中调用。
现在的话这样循环,picturebox不会一个一个替换显示。
然后这个间隔的时间 Time Interval其实是不相同的,我上面用的循环就是我已经把间隔的时间也在一个数组里面了,可以直接在循环中调用。
现在的话这样循环,picturebox不会一个一个替换显示。
你可以看下这个,哈哈: http://bbs.csdn.net/topics/390967304
for (int index = 1; index < timeNum; index++)
{
var stopwatch = Stopwatch.StartNew();
stopwatch.Restart();
//MessageBox.Show(“test”);
Thread.Sleep(5000);
pictureBox1.Image = list1[index * 2];
pictureBox2.Image = list1[index * 2 + 1];
stopwatch.Stop();
}我认为你的申明要放在循环里面。
private void button3_Click(object sender, EventArgs e)
{
var stopwatch = Stopwatch.StartNew();
for (int index = 1; index < timeNum; index++)
{
stopwatch.Restart();
Thread.Sleep(5000);
pictureBox1.Image = list1[index * 2];
Thread.Sleep(5000);
pictureBox2.Image = list1[index * 2 + 1];
stopwatch.Stop();
}
}
stopwatch是用来检测代码执行时间的
不是定时器啊
你可以看下这个,哈哈: http://bbs.csdn.net/topics/390967304
不会用,就去学,而不是因为不会用,所以就不用
好比你想给花翻翻土,浇浇水,你需要铲子和水壶.没有的话用叉子和饭碗也行,还没有用筷子和瓶子也行
如果你非要用鼠标翻土,用键盘浇水,那是自己找不自在
你可以看下这个,哈哈: http://bbs.csdn.net/topics/390967304
不会用,就去学,而不是因为不会用,所以就不用
好比你想给花翻翻土,浇浇水,你需要铲子和水壶.没有的话用叉子和饭碗也行,还没有用筷子和瓶子也行
如果你非要用鼠标翻土,用键盘浇水,那是自己找不自在顶
当 MessageBox 显示的时候, 这个线程才可以抽空显示图片.
最好的办法就是用 Timer , 可以设一个比较小的间隔(最好是Time Interval的最大公约数),
每次执行的时候计算当前应该显示哪幅图, 如果需要切换了就切换.
private void button3_Click(object sender, EventArgs e)
{ for (int i = 0; i < 4; i++)
{
MessageBox.Show("test");
sec = 0;
timer1.Enabled = true;
timer1.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
sec++;
if(sec==5000)
{
pictureBox1.Image = list[3];
pictureBox2.Image = list[4];
timer1.Enabled = false;
timer1.Stop();
}
} 问题是: MessageBox.Show("test");这个连续弹出来,for循环,timer1_Tick貌似不起作用只执行了一次,用的是system.window.forms下面的timer,是不是要在Tick事件中做什么判断再跳转出来?谢谢大家如上回复
那就是要把判断的逻辑放到Tick事件中感觉,我再试试看~
for (int i = 1; i <= timeNum; i++)
{
//MessageBox.Show("test");
Thread.Sleep(Convert.ToInt32(arrTime[i-1]));
pictureBox1.Image = list1[i*2];
pictureBox2.Image = list1[i*2+1];
pictureBox1.Refresh();
pictureBox2.Refresh();
}