vb.net – 使用线程打开表单

vb.net – 使用线程打开表单,第1张

概述我目前正在研究VB.NET,我对使用线程打开表单有疑问. 例如,当我单击打开按钮时,则会启动并打开另一个表单以添加或更改数据. 因此,我试图实现这一部分如 Private Sub menu_Click(sender As Object, e As EventArgs) Handles menu.Click Dim A As System.Threading.Thread = 我目前正在研究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 SubPublic 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 SubPublic Sub Task_A()    frmBuild = New YourForm() ' Must be created on this thread!    Application.Run(frmBuild)End Sub

要从其他线程关闭表单,您可以使用:

frmBuild.BeginInvoke(New Action(Sub() frmBuild.Close()))

And,How can we kill the thread when fromBuild closes ?

如果表单如上所示,则在表单关闭时线程将自动关闭.

总结

以上是内存溢出为你收集整理的vb.net – 使用线程打开表单全部内容,希望文章能够帮你解决vb.net – 使用线程打开表单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存