WinForms 中的每个表单都有自己的线程吗?

Posted

技术标签:

【中文标题】WinForms 中的每个表单都有自己的线程吗?【英文标题】:Does each form in WinForms have its own thread? 【发布时间】:2014-07-10 14:44:55 【问题描述】:

使用 WinForms 时,每个表单都有自己的线程吗?还是他们都有一个共同点?

我想问题/答案也适用于 Win32 编程,因为(据我了解),WinForms 只是 Win32 的抽象,但我不确定。如果是,我会这样标记问题。

【问题讨论】:

【参考方案1】:

不,通常同一进程的所有形式都在同一线程(称为 UI 线程)中运行。可以在不同的线程中显示表单,但这种情况并不常见,可能会导致各种问题...

更准确地说:表单并不真正“拥有”线程。它有一个消息泵,基本上只是一个处理发送到窗口的消息的循环。该消息泵在一个线程中运行。

【讨论】:

谢谢。这对于 Win32 编程是正确的,对吧? @TimCoker,是的,绝对是。正如您在问题中提到的,WinForms 只是 Win32 的托管包装器。

以上是关于WinForms 中的每个表单都有自己的线程吗?的主要内容,如果未能解决你的问题,请参考以下文章

WinForms 中的托管线程如何使用“this->”在回调函数中访问表单元素(更改值等)

VB.NET(WinForms)中带参数的安全线程池队列

.Net WinForms TabControl Steals 专注于表单激活

WinForms线程间修改

WinForms 应用程序中的自定义标题栏/镶边

C# Winforms DataGridView 选定单元格正在清除单元格值