I\'m looking into adding some flexibility to a class that I\'ve created which establishes a connection to a remote host and then performs an exchange of information (a handshake
You also have many implementations in the BCL (e.g. System.Runtime.Remoting.Messaging.AsyncResult) - use reflector or the reference source to check them out.