Issues with Calling Methods of Remote Objects Asynchronously
If a .NET remoting client is a context-bound class that requires a synchronized context, the callback function is dispatched through the .NET Framework remoting context infrastructure. This means the callback function itself can execute asynchronously with respect to its caller for such contexts. This is also the behavior of theattribute when applied to callback method signatures. Any such method callback function can execute synchronously or asynchronously with respect to the remote caller, and the caller cannot make any assumptions about completion of such a call when execution control returns to it.
Calling the EndInvoke method before the asynchronous operation is complete a second time with the same IAsyncResult is undefined.
In the .NET Framework versions 1.0 and 1.1, an asynchronous delegate that throws an exception is invoked a second time. In the .NET Framework version 2.0, the delegate is invoked only once.