public void SendMessage(ServiceMessage message)
message
The message to send.
The Message event will be generated when a response is received. The service needs to be running before it can accept messages.
using Leadtools;using Leadtools.Dicom.AddIn.Common;using Leadtools.Dicom.AddIn.Interfaces;AutoResetEvent statusEvent = new AutoResetEvent(false);public void InstallServiceTest(){ServiceAdministrator admin = new ServiceAdministrator(LEAD_VARS.InstallWin32Dir);ServerSettings settings = new ServerSettings();DicomService service;settings.AETitle = "DICOM_SERVER";settings.Port = 104;settings.DisplayName = "Sample Dicom Server";settings.IpAddress = Dns.GetHostEntry(Environment.MachineName).AddressList[0].ToString();service = admin.InstallService(settings);if (service != null && service.Settings.AETitle == "DICOM_SERVER"){service.Message += new EventHandler<MessageEventArgs>(service_Message);service.StatusChange += new EventHandler(service_StatusChange);Console.WriteLine("Base Directory: {0}", admin.BaseDirectory);Console.WriteLine("Server Directory: {0}", service.ServiceDirectory);try{AeInfo ae = new AeInfo();//// Start the service//service.Start();service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30));ProcessMessages();if (service.IsAdminAvailable){//// Add AE Title//ae.AETitle = "CLIENT";ae.Port = 1000;ae.Address = string.Empty;service.SendMessage(MessageNames.AddAeTitle, ae);}ProcessMessages();//// Pause the service//service.Pause();service.WaitForStatus(ServiceControllerStatus.Paused, TimeSpan.FromSeconds(30));ProcessMessages();}finally{if (service.Status != ServiceControllerStatus.Stopped){//// Stop the service//service.Stop();service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30));}//// UnInstall the service//admin.UnInstallService(service);}}}//// Need to process messages so events get called in time. In a normal windows applications there is no need// to do this extra processing.//private void ProcessMessages(){while (!statusEvent.WaitOne(0)){Application.DoEvents();}}void service_StatusChange(object sender, EventArgs e){DicomService service = sender as DicomService;Console.WriteLine(service.Status);if (service.Status == ServiceControllerStatus.Running || service.Status == ServiceControllerStatus.Stopped ||service.Status == ServiceControllerStatus.Paused){statusEvent.Set();}}void service_Message(object sender, MessageEventArgs e){if (e.Message.Message == MessageNames.AddAeTitle){if (e.Message.Success){AeInfo ae = e.Message.Data[0] as AeInfo;Console.WriteLine("AE Title: {0}", ae.AETitle);Console.WriteLine("IP Address: {0}", ae.Address);Console.WriteLine("Port: {0}", ae.Port);}else{Console.WriteLine("Error Adding AETITLE: {0}", e.Message.Error);}}statusEvent.Set();}