C# 和 Java 运行 中的 GUI 组件分别由单独的线程提供吗?
Are the GUI components in C# and Java run by a separate thread each?
我想知道 C# 和 Java 中的 GUI 组件是如何在幕后工作的。对我来说,似乎每个组件都需要有自己的线程来监听它。例如,如果您有 Frame、ButtonA 和 ButtonB,是否有三个单独的线程然后监听它们中的每一个?就像有一个 Frame 线程在 Frame 上监听,一个 ButtonA 线程在 ButtonA 上监听,第三个线程在 ButtonB 上监听?否则怎么能同时听到它们呢?我还想知道在 Visual Studio 中使用 GUI 设计器是否是一种不好的做法。使用GUI设计器工具是不是很不专业,我应该从头开始学习编写GUI代码吗?我应该知道如何用 C# 编写 GUI 代码吗?我在 Java.
中已经非常了解 Swing
谢谢!
我不了解 C#,但 AWT、Swing 和 JavaFX 与当今大多数 GUI 解决方案一样是单线程的。 Swing 中的主线程,例如称为事件分派线程,它的名称几乎可以告诉您它的作用。它基本上从事件队列中提取并将它们分派给相应的侦听器组件。例如。如果您单击一个按钮,操作系统将生成一个事件,该事件将被放入事件调度线程的队列中。然后事件派发线程将拉取事件,确定需要通知哪些组件(例如通过检查点击的坐标)并调用组件上的相应方法。
您可以在此处找到有关 Swing 中线程的更多信息:http://docs.oracle.com/javase/tutorial/uiswing/concurrency/
上述方法或多或少适用于大多数 GUI 框架。
我想知道 C# 和 Java 中的 GUI 组件是如何在幕后工作的。对我来说,似乎每个组件都需要有自己的线程来监听它。例如,如果您有 Frame、ButtonA 和 ButtonB,是否有三个单独的线程然后监听它们中的每一个?就像有一个 Frame 线程在 Frame 上监听,一个 ButtonA 线程在 ButtonA 上监听,第三个线程在 ButtonB 上监听?否则怎么能同时听到它们呢?我还想知道在 Visual Studio 中使用 GUI 设计器是否是一种不好的做法。使用GUI设计器工具是不是很不专业,我应该从头开始学习编写GUI代码吗?我应该知道如何用 C# 编写 GUI 代码吗?我在 Java.
中已经非常了解 Swing谢谢!
我不了解 C#,但 AWT、Swing 和 JavaFX 与当今大多数 GUI 解决方案一样是单线程的。 Swing 中的主线程,例如称为事件分派线程,它的名称几乎可以告诉您它的作用。它基本上从事件队列中提取并将它们分派给相应的侦听器组件。例如。如果您单击一个按钮,操作系统将生成一个事件,该事件将被放入事件调度线程的队列中。然后事件派发线程将拉取事件,确定需要通知哪些组件(例如通过检查点击的坐标)并调用组件上的相应方法。
您可以在此处找到有关 Swing 中线程的更多信息:http://docs.oracle.com/javase/tutorial/uiswing/concurrency/
上述方法或多或少适用于大多数 GUI 框架。