vb.net的委托调用

vb.net编程如果用多线程,因为无法传递函数指针,所以就存在了委托调用从而实现获得函数指针的作用:
在VB.NET中,一个委派是一个类型安全、面向对象的函数指针。

委托调用编程如下:


'定义一个发送端‘更新进度条’的委托
Public Delegate Sub UpdateSendCallBack(ByVal msg As String, ByVal SendNum As Integer)


'发送端‘更新进度条’
Public Sub UpdateSend(ByVal msg As String, ByVal SendNum As Integer)
If frmmainsl.ProgressBar1.InvokeRequired Then


Dim d As New UpdateSendCallBack(AddressOf UpdateSend)
frmmainsl.Invoke(d, New Object() {msg, SendNum})
Else


Me.Label3.Text = msg
Me.ProgressBar1.Value = SendNum
End If


总结:delegate声明一个委托——定义委托调用的函数。(委托和函数的参数要一致)


这样在其他线程中要实现更新季度条时要这样写: frmmainsl.UpdateSend("第" & PacketNum + 1 & "包传送结束!", PacketNum + 1)




正规写法:


定义一个发送端‘更新进度条’的委托
Public Delegate Sub UpdateSendCallBack(ByVal msg As String, ByVal SendNum As Integer)


'发送端‘更新进度条’
Private Sub UpdateSend(ByVal msg As String, ByVal SendNum As Integer)
Me.Label3.Text = msg
Me.ProgressBar1.Value = SendNum
End If


这样在其他线程中要实现更新季度条时要这样写: frmmainsl.Invoke(New UpdateSendCallBack(AddressOf UpdateSend), New Object() {"第" & PacketNum + 1 & "包传送结束!", PacketNum + 1})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值