【问题标题】:.Net remoting & client locked but displays no error.Net 远程处理和客户端锁定但未显示错误
【发布时间】:2015-12-14 10:59:13
【问题描述】:

客户端和服务器在同一台机器上。

在服务器端,我在一个单独的线程中构建我的远程对象(它不是主线程):

Private _remoteObject as RemoteObject
...

'Just one time :
Dim tc as TcpChannel = New TcpChannel(1002)
ChannelServices.registerChannel(tc, false)
RemotingConfiguration.RegisterWellKnownServiceType(GetType(IRemoteObject),  "RemoteServerObject", WellKnownObjectMode.SingleCall)
RemotingServices.Marshal(_remoteObject, "RemoteServerObject")
...
_remoteObject = new RemoteObject()
_remoteObject.RemoteOtherObjects.Add(New RemoteOtherObject(_property1, _property2))

客户端:

Private _remoteObject as Remoting.IRemoteObject
...
'One time
Dim tcpChannel As New TcpChannel()
ChannelServices.RegisterChannel(tcpChannel, false)
Dim _remoteObject as IRemoteObject
_remoteObject = Activator.GetObject(GetType(RemotingObject.IRemoteObject), "tcp://localhost:1002/RemoteServerObject")
While True
   Thread.Sleep(1000)
   Dim remoteOtherObject as IRemoteOtherObject = _remoteObject.GetRemoteOtherObjectByName("testName")
   For Each property2 as IProperty2 In remoteOtherObject.Properties2
       Console.WriteLine(property2.someting)
   Next
End While

RemoteObject的所有子对象都继承MarshalByRefObject。 客户端只看到RemoteObject(单独的dll)的接口。

我的问题是,在客户端的 each 循环中,我没有错误,它只是被锁定,我的 控制台正在响应,但没有写入任何内容

关于这个问题的任何想法?

【问题讨论】:

  • 还有什么可以改善我的问题:我尝试通过 Singleton 或 SingleCall,出现同样的问题。
  • 看起来服务器没有给客户端获取对象的时间。
  • 在客户端,我的对象被很好地检索,它们在透明代理表单上。将它们转换为真正的代理/对象似乎存在问题......

标签: vb.net multithreading remoting


【解决方案1】:

问题是两个提示之间的冲突问题。 服务端使用与客户端相同的 UI 线程,未刷新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    相关资源
    最近更新 更多