Hier ist deine Klasse leicht abgwandelt
Imports System
Imports System.ComponentModel
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
<Serializable()> _
Public Class RemotingClass
Inherits System.MarshalByRefObject
Public Overrides Function InitializeLifetimeService() As Object
Return Nothing
End Function
Enum Mode
None
Server
Client
End Enum
Private m_SharedText As String
Private Shared s_Mode As Mode = Mode.None
' port to use
Const DefaultPort As Integer = 12345
' name of the well known object
Const ObjectName As String = "RemotingClass.Instance"
' local instance or proxy
Private Shared s_dx As RemotingClass
Public Property SharedText() As String
Get
SharedText = m_SharedText
End Get
Set(ByVal Value As String)
m_SharedText = Value
End Set
End Property
Public Shared Sub InitServer()
If s_Mode <> Mode.None Then MsgBox("Already initialized")
ChannelServices.RegisterChannel(New TcpChannel(DefaultPort))
RemotingConfiguration.RegisterWellKnownServiceType(GetType( _
RemotingClass), ObjectName, WellKnownObjectMode.Singleton)
s_Mode = Mode.Server
End Sub
Public Shared Sub InitClient()
If s_Mode <> Mode.None Then MsgBox("Server/Client already initialized")
ChannelServices.RegisterChannel(New TcpChannel)
s_dx = CType(Activator.GetObject(GetType(RemotingClass), String.Format( _
"tcp://localhost:{0}/{1}", DefaultPort, ObjectName)), RemotingClass)
s_Mode = Mode.Client
End Sub
Public Shared ReadOnly Property Instance() As RemotingClass
Get
Return s_dx
End Get
End Property
Private Sub New()
s_dx = Me
End Sub
End Class Das ist in einem Projekt "Common". Hier ist der Server:
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Common.RemotingClass.InitServer()
Me.Text = "Server"
End Sub
' Set
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Common.RemotingClass.Instance.SharedText = TextBox1.Text
End Sub
' Get
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click
TextBox1.Text = Common.RemotingClass.Instance.SharedText
End Sub
End Class Der Client ist gleich, nur mit .InitClient() und Me.Text = "Client". Und das klappt. Ich möchte nicht sagen ich würde Remoting unbedingt so implementieren, aber in einem einfachen Fall so geht's.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |