public void DisconnectAll() { List <Task> disconnectTasks = new List <Task>(); foreach (var connectedDevice in ConnectedDevices.ToArray()) { var t = Task.Run(() => connectedDevice.Disconnect()); disconnectTasks.Add(t); } Task.WaitAll(disconnectTasks.ToArray()); }