Estaba pensando que WinForms son clases como cualquier otra clase. Pero comenzar el proyecto me hace confundir. ¿Por qué el nuevo formulario comienza con Application.Run y qué tipo de mecanismo ocurre dentro de él?¿Qué hace Application.Run()?
5
A
Respuesta
12
Como dice en el documentation, comienza a ejecutar un bucle de mensaje de aplicación estándar en el hilo actual. El bucle de mensajes maneja los clics, las pulsaciones de teclas, las solicitudes de pintura y muchas otras cosas.
Cuando se llama with a form as an argument, también hace que esa forma sea visible.
4
Esto se remonta al Win32 API. Winforms se encuentra en la parte superior de la API de Win32. Application.Run() conecta su programa en (implementa) el win32 message loop. Casi todos los eventos de mouse y teclado (y casi todos los demás iniciados por el usuario) son realmente mensajes win32.
Cuestiones relacionadas
- 1. C# - Application.Run()
- 2. Application.Run() en diferentes hilos
- 3. C# Application.Run without Form
- 4. ¿Qué hace [:]?
- 5. ¿Por qué hace esto lo que hace?
- 6. ¿Cuál es la diferencia entre Application.Run() y Form.ShowDialog()?
- 7. ¿Qué hace "make check"?
- 8. ¿Qué hace waitpid()?
- 9. ¿Qué hace aspnet_regiis.exe
- 10. ¿Qué hace este código?
- 11. ¿Qué hace stopLoading() realmente?
- 12. AutoFac: ¿Qué hace PropertyWiringFlags.AllowCircularDependencies?
- 13. ¿Qué hace este script?
- 14. ¿Qué hace @synchronized()?
- 15. ¿Qué hace document.domain = document.domain?
- 16. ¿Qué hace L?
- 17. ¿Qué hace -XX: MaxPermSize?
- 18. ¿Qué hace? ...: ... ¿hacer?
- 19. ¿Qué hace '@_' en Perl?
- 20. ¿Qué hace un IISReset?
- 21. ¿Qué hace ReliabilityContractAttribute?
- 22. ¿Qué hace Html.HiddenFor?
- 23. Android - ¿Qué hace adapter.notifyDataSetInvalidated?
- 24. ¿Qué hace pg_escape_string exactamente?
- 25. ¿Qué hace [STAThread]?
- 26. ¿Qué hace testAndroidTestCaseSetUpProlyly
- 27. ¿Qué hace fork = "true"?
- 28. ¿Qué hace DbConnection.EnlistTransaction?
- 29. ¿Qué hace mod_pagespeed?
- 30. ¿Qué hace __sync_synchronize?
Application.Run funciona como un puente entre el sistema operativo y la clase Form? Pero, ¿cómo funciona el mecanismo de fondo? Aplicación. Ejecutar algunos métodos de clase de formulario (enviar argumentos de mensajes)? – Freshblood
Normalmente, esperaba que Form haga sus propios trabajos de forma nativa, pero parece que deja algunos trabajos para Application.Run – Freshblood
Una forma típica no hace nada hasta que se produce un evento. Sin el ciclo de mensajes, los eventos no se generarían, por lo que no pasaría nada. Intenta mostrar un formulario sin llamar a 'Application.Run (form);'. El formulario aparecerá pero no responderá por completo. Ni siquiera pinta correctamente. Lo mismo ocurre si escribe código de bloqueo en un controlador de eventos: si bloquea el hilo principal, evita que se ejecute el bucle de mensajes para que su formulario no reciba más eventos. –