InstallService Method

Summary

Installs the DICOM service.

Syntax
C#
VB
C++
public DicomService InstallService( 
   ServerSettings settings 
) 
  
Public Function InstallService( _ 
   ByVal settings As ServerSettings _ 
) As DicomService 
public: 
DicomService^ InstallService(  
   ServerSettings^ settings 
)  

Parameters

settings
The settings that describe the DICOM service.

Return Value

A DicomService class that represents the installed service.

Example

Shows how to install and perform some administrative tasks on a server.

C#
VB
using Leadtools; 
using Leadtools.Dicom.AddIn.Common; 
using Leadtools.Dicom.AddIn.Interfaces; 
 
 
AutoResetEvent statusEvent = new AutoResetEvent(false); 
 
public void InstallServiceTest() 
{ 
   ServiceAdministrator admin = new ServiceAdministrator(@"C:\LEADTOOLS 20\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(); 
} 
Imports Leadtools 
Imports Leadtools.Dicom.AddIn.Common 
Imports Leadtools.Dicom.AddIn.Interfaces 
 
 
Private statusEvent As AutoResetEvent = New AutoResetEvent(False) 
 
Public Sub InstallServiceTest() 
   Dim admin As ServiceAdministrator = New ServiceAdministrator("C:\LEADTOOLS 20\Bin\DotNet4\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 

Requirements

Target Platforms

Help Version 20.0.2020.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom.Server.Admin Assembly