C#游戏开发中快速的游戏循环的实现。参考《精通C#游戏编程》一书。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; namespace GameLoop
{
[StructLayout(LayoutKind.Sequential)]
public struct Message
{
public IntPtr hWnd;
public Int32 msg;
public IntPtr wParam;
public IntPtr lParam;
public uint time;
public System.Drawing.Point p;
} public class FastLoop
{
[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern bool PeekMessage(
out Message msg,
IntPtr hWnd,
uint messageFilterMin,
uint messageFilterMax,
uint flags); PreciseTimer _timer = new PreciseTimer();
public delegate void LoopCallback();
LoopCallback _callback; public FastLoop(LoopCallback callback)
{
_callback = callback;
Application.Idle += new EventHandler(OnApplicationEnterIdle);
} void OnApplicationEnterIdle(object sender, EventArgs e)
{
while (IsAppStillIdle())
{
_callback();
}
} private bool IsAppStillIdle()
{
Message msg;
return !PeekMessage(out msg, IntPtr.Zero, , , );
} } }

---恢复内容结束---

最新文章

  1. C# Request中修改header信息
  2. 介绍开源的.net通信框架NetworkComms框架之三 传递List
  3. keyCode 与charCode
  4. mysql中使用update select
  5. PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码
  6. 那天有个小孩跟我说LINQ(五)转载
  7. tomcat配置CATALINA_HOME变量
  8. php 5.5 xhprof for windows
  9. 详细图解window环境mongodb下载、安装、配置与使用
  10. AutoLayout的几种方法
  11. C#-----集合List<T>的常用方法
  12. Docker学习笔记-Redis 安装
  13. [转] Java接口_interface_implements
  14. CSS 中 calc() 函数用法
  15. i春秋CTF web题(1)
  16. css媒体查询来书写二倍图三倍图设置
  17. JS - 常用效果代码库 (四)
  18. 简单选择排序实现(Java)
  19. SystemVerilog Event Scheduling Algorithm
  20. Warning: RPMDB altered outside of yum.的解决办法

热门文章

  1. 你真的了解 Unicode 和 UTF-8 吗?
  2. Evolution(矩阵快速幂)zoj2853
  3. Magic Number (zoj3622)
  4. JavaScript高级编程———JSON
  5. JavaScript 事件处理机制
  6. 在Android Studio中调用so中的方法
  7. Java语言的特点以及Java与C/C++的异同
  8. 转:C#综合揭秘——细说多线程(下)
  9. SpringMVC_JDBC
  10. 500.19 ,错误:4.00x80070005