public OpenFilesResult OpenFiles(OpenFilesRequest request) { // Done for reasons of speed, as well as the fact that a call to the service from the same thread // that the service is hosted on (the main UI thread) will cause a deadlock. if (SynchronizationContext.Current == ViewerAutomationServiceHostTool.HostSynchronizationContext) { return new ViewerAutomation().OpenFiles(request); } else { using (ViewerAutomationServiceClient client = new ViewerAutomationServiceClient()) { return client.OpenFiles(request); } } }
public OpenFilesResult OpenFiles(OpenFilesRequest request) { if (request == null) { const string message = "The open files request cannot be null."; Platform.Log(LogLevel.Debug, message); throw new FaultException(message); } if (request.Files == null || request.Files.Count == 0) { const string message = "At least one file or directory must be specified."; Platform.Log(LogLevel.Debug, message); throw new FaultException(message); } var helper = new OpenFilesHelper(); try { foreach (var file in request.Files) FileProcessor.Process(file, null, helper.AddFile, true); } catch (Exception e) { Platform.Log(LogLevel.Error, e); const string message = "There was a problem with the files/directories specified."; throw new FaultException<OpenFilesFault>(new OpenFilesFault { FailureDescription = message }, message); } if (request.WaitForFilesToOpen.HasValue && !request.WaitForFilesToOpen.Value) { SynchronizationContext.Current.Post(ignore => helper.OpenFiles(), null); return new OpenFilesResult(); } try { helper.HandleErrors = false; var viewer = helper.OpenFiles(); var viewerId = ViewerAutomationTool.GetViewerId(viewer); return new OpenFilesResult { Viewer = new Viewer(viewerId.Value, GetPrimaryStudyIdentifier(viewer)) }; } catch (Exception e) { if (!request.ReportFaultToUser.HasValue || request.ReportFaultToUser.Value) { SynchronizationContext.Current.Post( ignore => ExceptionHandler.Report(e, ImageViewer.StudyManagement.SR.MessageFailedToOpenImages, Application.ActiveDesktopWindow), null); } const string message = "There was a problem opening the files/directories specified in the viewer."; throw new FaultException<OpenFilesFault>(new OpenFilesFault { FailureDescription = message }, message); } }
public OpenFilesResult OpenFiles(OpenFilesRequest request) { return(base.Channel.OpenFiles(request)); }