Establishing a two way connection.
Using IConnectionPoint family of interfaces
Basic example.
Mutlithreaded callback.
Spawn a new thread and make a callback from it.