委托,Delegate
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了水城免费建站欢迎大家使用!
就是让你处于这个线程里时,委托另一个线程去执行一些动作
我简单举一个写richtextbox的例子:
////////////////////////////////////////////
'创建一个名为 MySubDelegate 的委托。
Delegate Sub MySubDelegate(ByVal txt As String)
'写信息到富文本主窗口
Private Sub txtW(ByVal txt As String)
Dim msgd As New MySubDelegate(AddressOf Me.txtW1)
Dim arg(0) As Object
arg(0) = txt
Me.Invoke(msgd, arg)
End Sub
'委托指向
Private Sub txtW1(ByVal txt As String)
Me.RichTextBox1.AppendText(txt)
End Sub
/////////////////////
这样,你在多线程应用时,在其他线程里用txtW(str)来写richtextbox,就不会产生错误了。不然,直接垮线程写richtextbox,可能会出现和UI线程的冲突。
Sub bc()
Dim cs As New qq163(AddressOf js)
Application.DoEvnts
Invoke(cs)
End Sub
.net 为了安全,默认不允许跨线程访问操作控件。只能谁创建了控件,谁操作。
这个textbox只能从主线程访问。
解决方案一般有两个
1. 使用委托机制。委托创建线程去访问
2. 设置Me.CheckForIllegalCrossThreadCalls = False 表示不检测跨线程错误
网站栏目:vb.net委托与线程 net 委托
标题路径:https://www.cdcxhl.com/article14/doepjde.html
成都网站建设公司_创新互联,为您提供商城网站、App开发、微信公众号、网站维护、企业网站制作、网页设计公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联