Делегат может быть многоадресным делегатом.В C # вы можете использовать + = для объединения нескольких делегатов в один многоадресный делегат.Обычно вы видите это как событие, а затем используете AddHandler в VB для добавления нескольких делегатов к событию.
Но если вы сделали что-то вроде этого:
Public Delegate Sub PostSolver()
, а затем объявили полев классе:
Private PostSolve As PostSolver
, а затем создали два делегата и использовали Delegate.Combine для их объединения:
Dim call1 As PostSolver
Dim call2 As PostSolver
call1 = AddressOf PostSolve2
call2 = AddressOf PostSolve3
PostSolve = PostSolver.Combine(call1, call2)
Вы можете вызвать PostSolve (), и будут вызваны оба делегата.
Может быть проще сделать это Событием, которое настроено для этого без лишних хлопот.
Обновление: чтобы удалить делегата из списка, вы используете метод Delegate.Remove.Но вы должны быть осторожны, чтобы использовать возвращаемое значение в качестве нового многоадресного делегата, иначе он по-прежнему вызовет делегата, которого вы считали удаленным.
PostSolve = PostSolver.Remove(PostSolve, call1)
Вызов PostSolve не вызовет первого делегата.