Issues with Calling Methods of Remote Objects Asynchronously
This topic is specific to a legacy technology that is retained for backward compatibility with existing applications and is not recommended for new development. Distributed applications should now be developed using the Windows Communication Foundation (WCF).
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 the OneWayAttribute attribute 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.