C# 时间控件timer间隔太小而引发的问题

长枫丶 2013-05-21 02:21:06
gameTiker = new System.Timers.Timer(10);
gameTiker.Elapsed += new ElapsedEventHandler(GameTiker_Elapsed);
gameTiker.Enabled = true;

private void GameTiker_Elapsed(object sender, ElapsedEventArgs e)
{
``Draw();
}

public void Draw()
{}

问题描述:
在时间间隔很小的时候,方法Draw未执行完成,又将开始另一次的执行。
我希望等Draw执行完成,才允许开始另一次执行Draw方法,请问应该怎么做?
...全文
612 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
长枫丶 2013-05-21
  • 打赏
  • 举报
回复
引用 1 楼 MicrosoftCenterOfHN 的回复:
draw前stop. draw后再start.
这种方法这简单,不过能解决问题就行
  • 打赏
  • 举报
回复
引用 6 楼 w774354431 的回复:
还是没解决 啊
1#楼不是告诉你了吗
长枫丶 2013-05-21
  • 打赏
  • 举报
回复
引用 4 楼 ppyyhh 的回复:
加锁吧。 定义变量 static Mutex myMutex = new Mutex(); 使用 myMutex.WaitOne(); ``Draw(); myMutex.ReleaseMutex();
还是没解决
长枫丶 2013-05-21
  • 打赏
  • 举报
回复
引用 3 楼 kudiao119 的回复:
设置一个bool值 开始运行是值为false 直到运行结束将值改为true 然后timer里加个判断如果值为true才执行
还是没解决 啊
xian_wwq 2013-05-21
  • 打赏
  • 举报
回复
简单有效的办法,是改用线程。 与timer比较,用线程稍微麻烦点,要用到委托。
ppyyhh 2013-05-21
  • 打赏
  • 举报
回复
加锁吧。 定义变量 static Mutex myMutex = new Mutex(); 使用 myMutex.WaitOne(); ``Draw(); myMutex.ReleaseMutex();
kudiao119 2013-05-21
  • 打赏
  • 举报
回复
设置一个bool值 开始运行是值为false 直到运行结束将值改为true 然后timer里加个判断如果值为true才执行
Trust-Me 2013-05-21
  • 打赏
  • 举报
回复
1.把时间设置长一点;2.ls的也可以,先停止再开始;3.加锁试试
  • 打赏
  • 举报
回复
draw前stop. draw后再start.

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧