Pregunta

He creado un servidor/cliente de remotación C# simple con la vista de replicar un VB6 ActiveX EXE existente.

El cliente crea un objeto singleton activado por servidor correctamente. El objeto solo es muy simple tener una propiedad: un recuento. Cada cliente que se ejecuta crea el objeto e incrementa su recuento.

Simple: varios clientes trabajan con el mismo objeto SimpleTon y la propiedad de recuento puede ser incrementada por cada uno.

Sin embargo ... si dejo a un cliente abierto por cualquier período de tiempo, por ejemplo, por ejemplo, un par de minutos, cuando el cliente incrementa la propiedad de conteo del objeto, de repente la propiedad de conteo se ha inicializado en cero, en todos los clientes. Es como si el objeto remoto hubiera sido destruido y recreado a pesar de que el objeto que solo se recupera del servidor una vez, cuando se abre el cliente.

Cualquier pensamiento apreciado

Gracias mm

¿Fue útil?

Solución

Creo que necesitas anular la vida útil del objeto remoto:

public override object InitializeLifetimeService()
    {
        return null; //remote object lease time forever
    }

Coloque eso en su clase que hereda MarshalByRefobject

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top