Vb.net 主线程和主线程
我不完全理解STATHREAD属性的作用。请参阅下面的代码:Vb.net 主线程和主线程,vb.net,Vb.net,我不完全理解STATHREAD属性的作用。请参阅下面的代码: 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)
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进行通信
这里也有很好的答案:谢谢。在单线程VB.NET应用程序中使用StatThread时,您是否能够提供一个示例或示例链接,以说明存在风险?一个副作用是,任何依赖StatThreading模型的GUI控件都无法正常运行。对于作为内置windows组件包装器的.NET组件,这种情况经常发生。