当前位置:编程学习 > C#/ASP.NET >>

C# 用如何刷帧才不卡?

人眼是每秒24帧,我每秒25帧,用线程做死循环去刷,发现有时候会很卡,并且时间有延迟,跟实际时间对不上,最主要的是cpu占太多了(达到100%).用计时器除了cpu占有率之外其他问题还是一样,不知道各位怎么解决这个问题.主要代码如下:

  private void showDraw()
  {
  while (true)
  {
  //当不需要刷帧时进入死循环
  if (iGetBallState == null || idThread == 0)
  continue;
  if (idThread == 1)
  {
  double t = time;
  Color color = Color.Green;
  if(iGetBallState.setTime(ref t))
  color = Color.Red;
  else
  time += 1.0 / 25; //每秒25帧
  double x = iGetBallState.getX();
  double y = iGetBallState.getY();
  label_angle.Invoke(td);
  ball2dView.drawShow(x, y, color);
  Thread.Sleep(4);
  }
  }
--------------------编程问答-------------------- 复制的时候出了点问题,代码不那么好看,希望见谅.坐等解答. --------------------编程问答-------------------- 写游戏用xna吧。 --------------------编程问答-------------------- XNA,我画了500多个球,有碰撞效果的,60帧满帧运行,所以还是干啥就用啥吧 --------------------编程问答--------------------
引用 2 楼  的回复:
写游戏用xna吧。

不能自己写吗?  --------------------编程问答-------------------- 线程中不更新UI,UI定时去刷新界面,线程和UI通过共享数据交互,同时保证数据同步。 --------------------编程问答-------------------- 有加双缓冲什么的吗?更新界面的逻辑最好和修改数据的部分分开,使用异步去进行。
补充:.NET技术 ,  .NET Framework
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,