public static List <T> GetActiveInteropApp <T>(COMObjectsHelper comHelper, string interopAppName) { return(Wait.ForResult(() => { try { var comObject = Marshal.GetActiveObject(interopAppName); if (comObject == null) { return null; } comHelper.Register(() => comObject); return new List <T> { (T)comObject }; } catch (ElementNotAvailableException ex) { Console.WriteLine($"Exception thrown during getting '{interopAppName}' active interop object."); Console.WriteLine(ex); return null; } catch (COMException ex) { Console.WriteLine($"Exception thrown during getting '{interopAppName}' active interop object."); Console.WriteLine(ex); var comInstancesFromROT = comHelper.GetAllComInstancesFromROT <T>(comHelper); if (comInstancesFromROT.Count == 0) { return null; } return comInstancesFromROT; } }, timeoutMilliSeconds: 60000, retryRateDelayMilliSeconds: 5000)); }