address of 顾名思义,就是地址指向,每个函数都有一个地址,address of后面加函数名称。
成都创新互联公司专注于三明网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供三明营销型网站建设,三明网站制作、三明网页设计、三明网站官网定制、小程序定制开发服务,打造三明网络公司原创品牌,更为您提供三明网站排名全网营销落地服务。
handels 事件,你看看按钮的单击事件,窗体的启动事件,每个后面都有这个。
delegate 就是声明一个委托了。
我也不好详细说,其实你上Baidu搜这几个关键字加上点注解,比如“delegate的用法”,N多!
委托,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线程的冲突。
把UI对象当做参数传入 比如 Sub a(Form As Form1)
之后再用Form.Invoke(你的委托,参数) 就可以即时修改Form中的内容了
委托三个步骤
1、声明委托 用Delegate 声明一个委托 类型 参数要和 被委托的方法一样 例如 Delegate Function a(byval x as string) as string
2、实例化委托 dim t as new a(AddressOf Function Name)
3.通过 t(参数) 或者 t.Invoke(参数调用委托)
示例:
Module module1
Delegate Function a(ByVal x As Integer, ByVal y As Integer) As Integer '声明委托类型 委托可以使一个对象调用另一个对象的方法
Function sum(ByVal x As Integer, ByVal y As Integer) As Integer
Return (x + y)
End Function
Sub main()
Dim d As New a(AddressOf sum) '实例化委托
Dim s = 0
s = d.Invoke(1, 2) '执行委托
Console.WriteLine(s.ToString())
s = d(1, 2) '执行委托
Console.WriteLine(s.ToString())
MsgBox("")
End Sub
End Module