Remoting bietet Unterstützung für Ereignisse. Der Clientcode kann einfach ein Ereignis abonnieren, das von der Serverklasse bereitgestellt wird. (Hier gibt es eine lange Liste von Vorbehalten).
Sie können auch eine Rückrufschnittstelle an eine Remote-Klasse übergeben, vorausgesetzt, Ihre Implementierung der Schnittstelle ist ein MarshalByRef-Objekt.
Schnittstelle IMyCallback
{
void OnSomethingHappened(string information);
}
Klasse MyCallbackImplementation : MarshalByRefObject, IMyCallback
{
public void OnSomethingHappened(string information)
{
// ...
}
}
Klasse MyServerImplementation : MarshalByRefObject
{
List _callbacks = new List();
public void RegisterCallback(IMyCallback _callback)
{
_callbacks.Add(_callback);
}
public void InvokeCalbacks(string information)
{
foreach(IMyCallback callback in _callbacks)
{
_callback.OnSomethingHappened(information);
}
}
}