void TestService(string dicomServiceMessageGuid, string testType, string successMessage) { string message = string.Empty; string errorMessage; string serviceName = string.Empty; DicomService dicomService = null; Messager.Caption = "DICOM Server"; if (ServerState.Instance != null && ServerState.Instance.ServerService != null) { dicomService = ServerState.Instance.ServerService; } if (ServerState.Instance != null && ServerState.Instance.ServerService != null && !string.IsNullOrEmpty(ServerState.Instance.ServerService.ServiceName)) { serviceName = ServerState.Instance.ServerService.ServiceName; } if (dicomService == null) { message = string.Format("{0} listening Service must be running to {1}.", serviceName, testType); Messager.ShowWarning(this, message); return; } DicomServiceTesterResult result = DicomServiceTester.SendDicomServiceMessage(dicomService, dicomServiceMessageGuid, out errorMessage); switch (result) { case DicomServiceTesterResult.Success: message = string.Format("{0} {1}", serviceName, successMessage); Log(message); break; case DicomServiceTesterResult.ErrorServiceIsNull: message = string.Format("Listening Service has not been created."); break; case DicomServiceTesterResult.ErrorServiceNotRunning: message = string.Format("{0} listening Service must be running to {1}.", serviceName, testType); break; case DicomServiceTesterResult.ErrorServiceCannotAccessDatabase: message = string.Format("{0} listening Service cannot access database. {1}", serviceName, errorMessage); break; case DicomServiceTesterResult.ErrorServiceNotResponding: message = string.Format("Unable to communicate with {0} listening service.", serviceName); break; } if (result == DicomServiceTesterResult.Success) { Messager.ShowInformation(this, message); } else { Messager.ShowWarning(this, message); } }
public static DicomServiceTesterResult SendDicomServiceMessage(DicomService dicomService, string dicomServiceMessageGuid, out string errorMessage) { DicomServiceTesterResult result = DicomServiceTesterResult.Success; errorMessage = string.Empty; _serverService = dicomService; if (_serverService == null) { result = DicomServiceTesterResult.ErrorServiceIsNull; } else if (_serverService.Status != ServiceControllerStatus.Running) { result = DicomServiceTesterResult.ErrorServiceNotRunning; } else { _serverService.Message -= new EventHandler <MessageEventArgs>(_storageServerService_Message); _serverService.Message += new EventHandler <MessageEventArgs>(_storageServerService_Message); _serviceMessageReturned = false; _autoResetEvent.Reset(); bool exceptionError = false; try { _serverService.SendMessage(dicomServiceMessageGuid); // StorageAddinMessage.CrashDicomServer } catch (Exception ex) { if (string.Compare("Service must be running", ex.Message, true) == 0) { result = DicomServiceTesterResult.ErrorServiceNotRunning; } else { result = DicomServiceTesterResult.ErrorServiceCannotAccessDatabase; errorMessage = ex.Message; } exceptionError = true; } if (exceptionError) { return(result); } _autoResetEvent.WaitOne(WaitMilliseconds); if (_serviceMessageReturned) { if (_serviceMessage.Success) { result = DicomServiceTesterResult.Success; } else { errorMessage = _serviceMessage.Data[0] as string; result = DicomServiceTesterResult.ErrorServiceCannotAccessDatabase; } } else { result = DicomServiceTesterResult.ErrorServiceNotResponding; } } return(result); }