vb.net – 使用线程打开表单
发布时间:2020-12-17 07:25:59 所属栏目:百科 来源:网络整理
导读:我目前正在研究VB.NET,我对使用线程打开表单有疑问. 例如,当我单击打开按钮时,则会启动并打开另一个表单以添加或更改数据. 因此,我试图实现这一部分如 Private Sub menu_Click(sender As Object,e As EventArgs) Handles menu.Click Dim A As System.Threadi
我目前正在研究VB.NET,我对使用线程打开表单有疑问.
例如,当我单击打开按钮时,则会启动并打开另一个表单以添加或更改数据. 因此,我试图实现这一部分如 Private Sub menu_Click(sender As Object,e As EventArgs) Handles menu.Click Dim A As System.Threading.Thread = New Threading.Thread(AddressOf Task_A) A.Start() End Sub Public Sub Task_A() frmBuild.Show() End Sub 但是,我遇到错误,通过线程打开frmBuild.我是否需要使用其他方法打开表单? 而且,当fromBuild关闭时,我们如何杀死线程? 解决方法
这几乎总是一个坏主意.您不应该尝试使用单独的线程来打开表单 – 而是在主UI线程上打开所有表单,并移动否则会阻塞到后台线程的“工作”. BackgroundWorker是处理工作的常用方法.
话虽这么说,如果你出于某种不寻常的原因需要这样做,你还需要做两件事. 首先,您需要设置该线程的单元状态.您还需要使用Application.Run来显示表单,并且必须在适当的线程上创建该表单: Private Sub menu_Click(sender As Object,e As EventArgs) Handles menu.Click Dim th As System.Threading.Thread = New Threading.Thread(AddressOf Task_A) th.SetApartmentState(ApartmentState.STA); th.Start() End Sub Public Sub Task_A() frmBuild = New YourForm() ' Must be created on this thread! Application.Run(frmBuild) End Sub 要从其他线程关闭表单,您可以使用: frmBuild.BeginInvoke(New Action(Sub() frmBuild.Close()))
如果表单如上所示,则在表单关闭时线程将自动关闭. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |