VB.net 中界面与线程

VB.net 中界面与线程,第1张

概述先吐槽个事情 这个csdn你放在自己首面上合适吗,哥哥不吹牛,自己写的设备程序中,它有几根毛,我都查的出来。如果我对 自己写的设备软件和设备不了解,这个世界上没有人更了解这个设备和它的软件了。你搞这么句话,是想说什么 证明什么?自己哪一天被程序员骂成猪了,现在趁着这个机会讨回来吗 Vb.net中用户启动的线程是不能直接 *** 作界面资源的。具体的说 在一个界面中   在一个按键响应程序中   Priva

先吐槽个事情


这个csdn你放在自己首面上合适吗,哥哥不吹牛,自己写的设备程序中,它有几根毛,我都查的出来。如果我对

自己写的设备软件和设备不了解,这个世界上没有人更了解这个设备和它的软件了。你搞这么句话,是想说什么

证明什么?自己哪一天被程序员骂成猪了,现在趁着这个机会讨回来吗


Vb.net中用户启动的线程是不能直接 *** 作界面资源的。具体的说

在一个界面中

在一个按键响应程序中

PrivateSubBnTest_Click(senderAsObject,eAsEventArgs)HandlesBnTest.Click

Dim_thread AsThread

_thread = NewThread(AddressOfFuncThread)

_thread.Start()

EndSub

在线程FuncThread中不能直接调用label.text=”string”

那么如何解决这个问题呢?

这分两种情况

lFuncThread的代码与mainform在一个类中实现

lFnncThread的代码在module中,或其它不与mainform在一起的位置

第一种情况,我们可以这样处理

Public sub FuncThread()

Dim showMethod As Action= AddressOf Me.displayToWindow

showMethod()

End sub

Public sub displayToWindow()

label.text=”what you want to display”

End sub

这种方法中间有个委托showMethod做桥梁,实现了线程改变界面的梦想。

第二种情况,如果我们将FuncThread写在了一个module文件中,实现的方式是这样的。

第一步,在moudule文件中定义一个全局委托

Dim gDeleagteShowMethod as Action

第二步,在mainform中写好处理函数 displayToWindow()

第三步,在mainform中写好利用委托调用处理函数的函数

Public Sub DelegateShow()

Dim myCall As Action = AddressOf Me.displayToWindow

Me.Invoke(myCall)

'myCall()

End Sub

注意这一步中不能直接调用mycall()要伤脑筋Me.Invoke(myCall)

第三步,在mainform load事件中,将委托实例化

gDeleagteShowMethod = AddressOf Me.DelegateShow

第四步,在moudule文件中调用全局委托

gDeleagteShowMethod()

实现在模块代码中修改界面的梦想。

第二种方法总结起来,就是使用了两次委托。

第一次是在mainform的load事件中让全局委托找到自己对应的实例。

第二次调用mainform的invoke方法,让mainform界面线程在自己的一个合适时间修改界面相关显示。

总结

以上是内存溢出为你收集整理的VB.net 中界面与线程全部内容,希望文章能够帮你解决VB.net 中界面与线程所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存