委托这个概念穿插在vb.net的很多地方且非常抽象,但是VB.NET相关的资料还是非常少的(包括windows官方文档也只有c#版本的.我在看过很多大佬的解释和教学后从完全不明白到略知一二,现在把自己的体会记录一下
Delegate 语句定义委托类的参数和返回类型。任何具有匹配参数和返回类型的过程都可用于创建此委托类的实例。然后就可以调用委托的Invoke 方法,通过委托实例调用此过程。可以在命名空间、模块、类或结构级别声明委托,但不能在过程内声明。每个委托类都定义一个被传递对象方法规范的构造函数。委托构造函数的参数必须是对方法或lambda 表达式的引用。
比如 我想委托一个sub 用于增加进度条.
首先我需要定义委托类型(也就是第一句)
后面是我需要委托执行的sub
Private Delegate Sub progress(ByVal x As Integer, ByVal obj As ProgressBar) Sub progressUp(i As Integer, progressB As ProgressBar) If progressB.Value < 100 Then progressB.Value += i End If End Sub
在需要使用委托时,先把委托类型实例化
然后使用invoke或者begininvoke进行委托:
Dim proInvokeUp As New progress(AddressOf progressUp) Dispatcher.Invoke(proInvokeUp, 4, ProgressBar1)
下一篇会加上action和func 的委托方法