我不完全理解 STATHREAD 属性的作用http://msdn.microsoft.com/en-us/library/system.stathreadattribute.aspx 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 进行通信。
这里也有很好的答案:为什么所有 Winforms 程序都需要 [STAThread] 属性? https://stackoverflow.com/questions/102437/why-do-all-winforms-programs-require-the-stathread-attribute
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)