Example of using IPC remoting to send messages between processes: The code needs implementation of server availability checking to see if the server application is present and listening for messages (else the code crashes)
Project: IPC_SharedInterfaces Class: ICommunicationService
Public Interface ICommunicationService Sub SaySomething(ByVal text As String) End Interface
Project: IPC_Server Class: CommunicationService
Public Class CommunicationService Inherits MarshalByRefObject Implements IPC_SharedInterfaces.ICommunicationService Public Sub SaySomething(ByVal text As String) Implements IPC_SharedInterfaces.ICommunicationService.SaySomething MsgBox(text) End Sub End Class
Class: Form1
Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Channels.Ipc Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim ipcCh As IpcChannel ipcCh = New IpcChannel("MojProgramcic") ChannelServices.RegisterChannel(ipcCh, False) RemotingConfiguration.RegisterWellKnownServiceType( GetType(CommunicationService), "MojURI", WellKnownObjectMode.Singleton) End Sub End Class
References: IPC_SharedInterfaces, System.runtime.Remoting
Project: IPC_Client Class: Form1
Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Channels.Ipc Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim ipcCh As New IpcChannel("MojKlijent") ChannelServices.RegisterChannel(ipcCh, False) Dim obj As IPC_SharedInterfaces.ICommunicationService = DirectCast(Activator.GetObject(GetType(IPC_SharedInterfaces.ICommunicationService), "ipc://MojProgramcic/MojURI"), IPC_SharedInterfaces.ICommunicationService) Try obj.SaySomething(Now.TimeOfDay.ToString) Catch err As System.Runtime.Remoting.ServerException MsgBox(err) End Try ChannelServices.UnregisterChannel(ipcCh) End Sub End Class
References: IPC_SharedInterfaces, System.runtime.Remoting