Application.Run()有什么作用?

Fre*_*ood 5 .net c# winforms

我以为WinForms是和其他类一样的类.但是从项目开始让我感到困惑.为什么新的Form从Application.Run开始,它内部发生了什么样的机制?

Mar*_*ers 12

正如文档中所说,它开始在当前线程上运行标准的应用程序消息循环.消息循环处理点击,按键,绘制请求以及许多其他事情.

使用表单作为参数调用时,它也使该表单可见.

  • @Freshblood - 这是一个古老的win32 api的东西.它将您的程序挂钩到win32消息循环中,以便您可以获取操作系统发布的消息(处理事件).由于所有鼠标和按键事件(以及用户发起的大多数事情)都是这样的,所以你需要它. (4认同)
  • 在引发事件之前,典型的表单不会执行任何操作.如果没有消息循环,则不会引发事件,因此不会发生任何事情.尝试显示一个表单而不调用`Application.Run(form);`.表格将出现,但它将完全没有反应.它甚至没有正确绘制.如果在事件处理程序中编写阻塞代码,则会发生同样的情况 - 如果阻止主线程阻止消息循环运行,那么表单不会再接收任何事件. (2认同)