シングルトンにしたいアセンブリにクラスがあります。サーバー アプリケーションで作成し、同じマシン上の別のアプリケーションがこのクラス インスタンスにアクセスできるようにします。
この遅延読み込みの実装を使用して、インスタンスが 1 つだけ存在するようにしています。
Private Shared ReadOnly _instance As New Lazy(Of PersonX)(Function() New PersonX(), System.Threading.LazyThreadSafetyMode.ExecutionAndPublication)
Public Shared ReadOnly Property Instance() As PersonX
Get
Return _instance.Value
End Get
End Property
そして、次のリモーティング コードでPrivate Sub New を使用しています。
Dim uri As String = String.Format("tcp://{0}:{1}/PersonX", "localhost", 1976)
RemotingServices.Marshal(Person.Instance, uri)
RemotingConfiguration.RegisterActivatedServiceType(GetType(PersonX))
Calling コードでは、最初のインスタンスを次のように作成します。
Dim PersonX as SingletonTestClass.PersonX = SingletonTestClass.PersonX.Instance
次のコードを使用して、リモート処理を使用してインスタンスに接続しています。
Dim newPerson As SingletonTestClass.PersonX
Dim uri As String = String.Format("tcp://{0}:{1}/PersonX", "localhost", 1976)
newPerson = CType(Activator.GetObject(GetType(SingletonTestClass.PersonX), uri), SingletonTestClass.PersonX)
しかし、オブジェクトのプロパティにアクセスしようとすると、次の行にRequested Service not foundというエラーが表示されます。
newPerson.Name = "Fred"