This delegate type is used as part
of asynchronous operations on
delegates in general. As described in Chapter 16,
delegates can be executed in an asynchronous fashion, using a random
thread out of the system-managed thread pool. Frequently, however,
programmers desire notification of the asynchronously executing
delegate's completion, and the
AsyncCallback is used to achieve that.
Using an AsyncCallback is fairly straightforward.
At the asynchronous delegate's invocation, pass in
an instance of this delegate (referring to a void-returning
IAsyncResult-accepting method) as part of the
BeginInvoke( ) call. When the asynchronously
executing delegate has finished execution, the method on the other
end of the AsyncCallback is invoked, with an
IAsyncResult object as the sole parameter. (This
IAsyncResult object contains the output parameters
from the delegate's call: the return value, along
with any out or ref parameters
declared as part of the method's signature.)
public delegate void AsyncCallback(IAsyncResult ar);