Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.5.2
|
Leadtools.Dicom.Server.Admin Namespace > ServiceAdministrator Class : InstallService Method |
public DicomService InstallService( ServerSettings settings )
'Declaration Public Function InstallService( _ ByVal settings As ServerSettings _ ) As DicomService
'Usage Dim instance As ServiceAdministrator Dim settings As ServerSettings Dim value As DicomService value = instance.InstallService(settings)
public: DicomService^ InstallService( ServerSettings^ settings )
Shows how to install and perform some administrative tasks on a server.
Imports Leadtools Imports Leadtools.Dicom.AddIn.Common Imports Leadtools.Dicom.AddIn.Interfaces Private statusEvent As AutoResetEvent = New AutoResetEvent(False) <TestMethod()> _ Public Sub InstallServiceTest() Dim admin As ServiceAdministrator = New ServiceAdministrator("C:\LEADTOOLS 19\Bin\Dotnet\Win32") Dim settings As ServerSettings = New ServerSettings() Dim service As DicomService 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 Not service Is Nothing AndAlso service.Settings.AETitle = "DICOM_SERVER" Then AddHandler service.Message, AddressOf service_Message AddHandler service.StatusChange, AddressOf service_StatusChange Console.WriteLine("Base Directory: {0}", admin.BaseDirectory) Console.WriteLine("Server Directory: {0}", service.ServiceDirectory) Try Dim 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 = 1000 ae.Address = String.Empty service.SendMessage(MessageNames.AddAeTitle, ae) End If ProcessMessages() ' ' Pause the service ' service.Pause() service.WaitForStatus(ServiceControllerStatus.Paused, TimeSpan.FromSeconds(30)) ProcessMessages() Finally If 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 Try End If End 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() Loop End Sub Private 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 Then statusEvent.Set() End If End Sub Private Sub service_Message(ByVal sender As Object, ByVal e As MessageEventArgs) If e.Message.Message = MessageNames.AddAeTitle Then If e.Message.Success Then Dim 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) Else Console.WriteLine("Error Adding AETITLE: {0}", e.Message.Error) End If End If statusEvent.Set() End Sub
using Leadtools; using Leadtools.Dicom.AddIn.Common; using Leadtools.Dicom.AddIn.Interfaces; AutoResetEvent statusEvent = new AutoResetEvent(false); [TestMethod] public void InstallServiceTest() { ServiceAdministrator admin = new ServiceAdministrator(@"C:\LEADTOOLS 19\Bin\Dotnet\Win32"); 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(); }