Assuming that you do everything that crosses the scope (WCF, Remoting), you should not pass the delegate as a callback, it just won't work.
Instead, you must define the contracts that the client implements and transfers to the service (WCF has callback agreements ), and then the service will call the callback.
When invoked, the client implementation of the callback is launched. In this implementation, the client makes changes to the user interface. Please note: most callbacks that come through calls within the application are not related to the thread that called them by default; make sure you make your user interface changes by marching the call into the user interface thread.
source share