public DicomService InstallService(ServerSettings settings)
Public Function InstallService( _ByVal settings As ServerSettings _) As DicomService
public:DicomService^ InstallService(ServerSettings^ settings)
settings
The settings that describe the DICOM service.
A DicomService class that represents the installed service.
Shows how to install and perform some administrative tasks on a server.
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();}
Imports LeadtoolsImports Leadtools.Dicom.AddIn.CommonImports Leadtools.Dicom.AddIn.InterfacesPrivate statusEvent As AutoResetEvent = New AutoResetEvent(False)Public Sub InstallServiceTest()Dim admin As ServiceAdministrator = New ServiceAdministrator("C:\LEADTOOLS 21\Bin\DotNet4\Win32")Dim settings As ServerSettings = New ServerSettings()Dim service As DicomServicesettings.AETitle = "DICOM_SERVER"settings.Port = 104settings.DisplayName = "Sample Dicom Server"settings.IpAddress = Dns.GetHostEntry(Environment.MachineName).AddressList(0).ToString()service = admin.InstallService(settings)If Not service Is Nothing AndAlso service.Settings.AETitle = "DICOM_SERVER" ThenAddHandler service.Message, AddressOf service_MessageAddHandler service.StatusChange, AddressOf service_StatusChangeConsole.WriteLine("Base Directory: {0}", admin.BaseDirectory)Console.WriteLine("Server Directory: {0}", service.ServiceDirectory)TryDim ae As AeInfo = New AeInfo()'' Start the service'service.Start()service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30))ProcessMessages()If service.IsAdminAvailable Then'' Add AE Title'ae.AETitle = "CLIENT"ae.Port = 1000ae.Address = String.Emptyservice.SendMessage(MessageNames.AddAeTitle, ae)End IfProcessMessages()'' Pause the service'service.Pause()service.WaitForStatus(ServiceControllerStatus.Paused, TimeSpan.FromSeconds(30))ProcessMessages()FinallyIf service.Status <> ServiceControllerStatus.Stopped Then'' Stop the service'service.Stop()service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30))End If'' UnInstall the service'admin.UnInstallService(service)End TryEnd IfEnd Sub'' 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 Sub ProcessMessages()Do While Not statusEvent.WaitOne(0)Application.DoEvents()LoopEnd SubPrivate Sub service_StatusChange(ByVal sender As Object, ByVal e As EventArgs)Dim service As DicomService = TryCast(sender, DicomService)Console.WriteLine(service.Status)If service.Status = ServiceControllerStatus.Running OrElse service.Status = ServiceControllerStatus.Stopped OrElse service.Status = ServiceControllerStatus.Paused ThenstatusEvent.Set()End IfEnd SubPrivate Sub service_Message(ByVal sender As Object, ByVal e As MessageEventArgs)If e.Message.Message = MessageNames.AddAeTitle ThenIf e.Message.Success ThenDim ae As AeInfo = TryCast(e.Message.Data(0), AeInfo)Console.WriteLine("AE Title: {0}", ae.AETitle)Console.WriteLine("IP Address: {0}", ae.Address)Console.WriteLine("Port: {0}", ae.Port)ElseConsole.WriteLine("Error Adding AETITLE: {0}", e.Message.Error)End IfEnd IfstatusEvent.Set()End Sub
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
