C#的事件(比如按钮点击)是如何被主线程(窗体)获取的?采用何种方式(轮询?while循环触发?)获取?
C#的事件(比如按钮点击)是如何被主线程(窗体)获取的?采用何种方式(轮询?while循环等触发?)获取?看到在窗体初始化中注册了事件on_click+=...,但是主线...
C#的事件(比如按钮点击)是如何被主线程(窗体)获取的?采用何种方式(轮询?while循环等触发?)获取?看到在窗体初始化中注册了事件on_click += ...,但是主线程是如何运行的?或说具体是在做什么?只看到了Application.Run(new Form1());,但是内部的就不懂了
展开
1个回答
展开全部
windows是消息驱动的,不是轮询。
如果你想做需要低反应延迟的游戏的话确实要使用轮询来判断输入状态,但Form不是用轮询的。
System.Windows.Forms.Control 类有个WndProc虚方法,会检测消息的传入,再根据消息判断发生了什么事,再去引发相应的事件。
protected virtual void WndProc(ref Message m)
如果你想做需要低反应延迟的游戏的话确实要使用轮询来判断输入状态,但Form不是用轮询的。
System.Windows.Forms.Control 类有个WndProc虚方法,会检测消息的传入,再根据消息判断发生了什么事,再去引发相应的事件。
protected virtual void WndProc(ref Message m)
追问
是引用命名空间using System.Windows.Forms;里的吗?在项目管理器中不能看到代码流程或调用方法吗?
追答
用ILSpy把 System.Windows.Forms.dll给反编译了,然后代码你自己慢慢看,虽然底层的部分是使用API
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询