Each delegate has a method named GetInvocationList()
that returns all the actual delegates that have been registered. So, assuming the delegate Type (or event) is named say MyDelegate
, and the handler instance variable is named myDlgHandler
, you can write:
Delegate[] clientList = myDlgHandler.GetInvocationList();
foreach (var d in clientList)
myDlgHandler -= (d as MyDelegate);
to cover the case where it might be null,
if(myDlgHandler != null)
foreach (var d in myDlgHandler.GetInvocationList())
myDlgHandler -= (d as MyDelegate);