Ich dachte, dass WinForms Klassen wie jede andere Klasse sind. Aber das Start-Formular-Projekt bringt mich durcheinander. Warum beginnen neue Formulare mit Application.Run und welche Art von Mechanismus passiert darin?Was Application.Run() tut?
5
A
Antwort
12
Wie es in der documentation heißt, beginnt es, eine Standard-Anwendungsnachrichtenschleife auf dem aktuellen Thread auszuführen. Die Nachrichtenschleife verarbeitet Klicks, Tastendrücke, Malanforderungen und viele andere Dinge.
Bei Aufruf with a form as an argument wird diese Form auch sichtbar gemacht.
4
Dies geht zurück auf die Win32 API. Winforms sitzt auf der Win32 API. Application.Run() verbindet Ihr Programm mit dem win32 message loop. Ziemlich viele Maus- und Tastaturereignisse (und die meisten anderen vom Benutzer initiierten Ereignisse) sind wirklich Win32-Nachrichten.
Verwandte Themen
- 1. Was eine Transaction tut wirklich tut
- 2. Was std :: _ lockit tut?
- 3. Was Buchhaltung tut?
- 4. Was $ q.defer() wirklich tut?
- 5. Was Python string.maketrans tut ("", "")
- 6. PG_restore. Was tut es?
- 7. Was ist der Unterschied zwischen Application.Run() und Form.ShowDialog()?
- 8. Application.Exit nach Application.Run funktioniert nicht
- 9. Mit Application.Run() auf verschiedenen Threads
- 10. Was tut RegExp 1 $ tun
- 11. MoreLinq Erwerben. Was tut es?
- 12. Was genau "config.assets.debug" Einstellung tut?
- 13. index.js nicht was index.ts tut
- 14. indexSetWithIndexesInRange tut nicht, was erwartet
- 15. Tut Scala Async alles, was Clojures core.async tut?
- 16. Was die exec.skip tut tut in Maven Befehl
- 17. "do" in "do Application.Run (Form)" Satz
- 18. Firemonkey TEdit nicht vor blinkt Application.run ausführen
- 19. Was eigentlich $ Funktion in Haskell tut?
- 20. Was tut die Zuweisung in rspec-rails?
- 21. Was tut setAction() tun für Vorsatz (Broadcast)
- 22. Was ist los mit meiner Seekbar? TUT
- 23. Was genau tut typedef Strukturknoten {...} Knoten; vertreten?
- 24. Was genau tut Attach() in Entity Framework?
- 25. Was Doppel Doppelpunkt in RewriteCond tut?
- 26. kann jemand sagen, was dieser Codeausschnitt tut
- 27. Java DOT-Operator, Was es tatsächlich tut
- 28. was tut yield_task_fair() tun in Linux Scheduler
- 29. Rekursion tut nicht, was es tun soll
- 30. Arduino F(): was tut es eigentlich
Application.Run funktioniert wie eine Brücke zwischen OS und Form-Klasse? Aber wie funktioniert der Hintergrundmechanismus? Application.Run verwendet einige Methoden der Form classes (send messages arguments)? – Freshblood
Normalerweise erwartete ich, dass Form seine eigenen Jobs nativ ausführt, aber es sieht so aus, dass es einige Jobs für Application.Run gibt. – Freshblood
Eine typische Form tut nichts, bis ein Event ausgelöst wird. Ohne die Nachrichtenschleife würden die Ereignisse nicht erhöht, so dass nichts passieren würde. Versuchen Sie, ein Formular anzuzeigen, ohne 'Application.Run (form);' aufzurufen. Das Formular wird angezeigt, es reagiert jedoch nicht mehr. Es malt nicht einmal richtig. Das Gleiche passiert, wenn Sie in einem Event-Handler blockierenden Code schreiben. Wenn Sie den Haupt-Thread blockieren, verhindern Sie, dass die Nachrichtenschleife ausgeführt wird, sodass Ihr Formular keine weiteren Ereignisse mehr empfängt. –