是否可以通过远程发送回调?我想做些myRemoteObject.PerformStuff( x => Console.WriteLine(x) );
的事情
如果没有,我将如何实现等效功能?
编辑:我知道Remoting已被WCF取代,但我仍然对此特定情况感兴趣。 (不过出于好奇,WCF中的问题如何?)
最佳答案
远程处理为事件提供支持。客户端代码可以简单地订阅服务器类公开的事件。 (这里有很多警告)。
另外,您可以将回调接口传递给远程类,条件是该接口的实现是MarshalByRef对象。
interface IMyCallback
{
void OnSomethingHappened(string information);
}
class MyCallbackImplementation : MarshalByRefObject, IMyCallback
{
public void OnSomethingHappened(string information)
{
// ...
}
}
class MyServerImplementation : MarshalByRefObject
{
List<IMyCallback> _callbacks = new List<IMyCallback>();
public void RegisterCallback(IMyCallback _callback)
{
_callbacks.Add(_callback);
}
public void InvokeCalbacks(string information)
{
foreach(IMyCallback callback in _callbacks)
{
_callback.OnSomethingHappened(information);
}
}
}