gpt4 book ai didi

vb.net - STATHREAD 和主线程

转载 作者:行者123 更新时间:2023-12-02 02:01:41 26 4
gpt4 key购买 nike

我不完全理解 STATHREAD 属性的作用 http://msdn.microsoft.com/en-us/library/system.stathreadattribute.aspx .请看下面的代码:

Imports Project1
Imports System.Threading

Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim t1 As New Thread(AddressOf PersonTest.Test2)
Dim t2 As New Thread(AddressOf PersonTest.Test2)
Dim t3 As New Thread(AddressOf PersonTest.Test2)
t1.Name = "Test1"
t2.Name = "Test2"
t3.Name = "Test3"
t1.Start()
t2.Start()
t3.Start()
End Sub

End Class

代码显式创建了三个线程,所以总共有四个线程,即主线程、t1、t2 和 t3。

具有一个线程(即主线程)的 Windows 窗体应用是否需要 STATHREAD?

最佳答案

STAThread 用于主 UI 线程。

在 Windows 中,单线程单元 (STA) 意味着(简单来说)Windows 消息泵将协同管理 UI。

该属性告诉应用程序为第一个/主 UI 线程有效地创建一个 STA 线程。其他线程有效地与该线程并行运行,它们需要确保在调用 UI 组件时,它们将它们作为消息通过 STA 中的消息泵传递。

现在很多人会说它是 COM 要求,这是事实。这是因为在其核心,COM 的 STA 线程模型使用 Windows 消息泵,并且需要与许多 Windows UI 进行通信。

这里也有很好的答案:Why do all Winforms programs require the [STAThread] attribute?

关于vb.net - STATHREAD 和主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com