Is EndInvoke() optional, sort-of optional, or definitely not optional?

Delegate.EndInvoke is documented as a thou shalt call this (i.e. necessary – else leaks happen) – from msdn:

Important Note

No matter which technique you use,
always call EndInvoke to complete your
asynchronous call.

Control.EndInvoke is OK to ignore for fire-and-forget methods – from msdn:

You can call EndInvoke to retrieve the
return value from the delegate, if
neccesary, but this is not required.

However – if you are using Delegate.BeginInvoke and don’t want the result, consider using ThreadPool.QueueUserWorkItem instead – it’ll make life a lot easier, and avoid the pain of IAsyncResult etc.

Leave a Comment