var tasks = new List<Task>(_clientCount);
foreach (var channel in _channels.Keys)
{
if (_channels.TryGetValue(channel, out var clientMap))
foreach (var clientId in clientMap.Keys)
if (clientMap.TryGetValue(clientId, out var client))
if (client.IsConnected)
tasks.Add(func(client));
}
await Task.WhenAll(tasks).ConfigureAwait(false);