是否可以通过远程发送回调?我想做些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);
         }
     }

}

08-26 23:24