public async Task <DeviceSource> ConnectAsync(string port, UInt16 universe) { try { var writer = await WriterFactory.CreateDmxWriterAsync(port); if (!Writers.Values.Any(x => x.UniverseID == universe)) { // start listening on a new universe SacnReceiver.JoinMulticastGroup(universe); } Writers.Add(port, new WriterEntry { Writer = writer, UniverseID = universe }); } catch (Exception ex) { await Console.Error.WriteAsync(ex.ToString()); throw new ExecutionError(ex.Message); } return(new DeviceSource { Id = port, Status = DeviceStatus.InUse, Universe = universe }); }