Exemple #1
0
        private async void PingParallelAwait()
        {
            var pinger    = new TwitchServersPinger();
            var pingTasks = new List <Task <TwitchPingResult> >();

            foreach (var server in servers)
            {
                serverNameToControl[server.Name].Pinging = true;
                var pingTask = Task.Run <TwitchPingResult>(() => pinger.PingAsyncTaskArgs(server));
                pingTasks.Add(pingTask);
            }
            while (pingTasks.Count > 0)
            {
                var firstFinishedTask = await Task.WhenAny(pingTasks);

                pingTasks.Remove(firstFinishedTask);

                var pingResult = await firstFinishedTask;
                serverNameToControl[pingResult.Server.Name].ServerPing = pingResult.Ping.Milliseconds;
                serverNameToControl[pingResult.Server.Name].Pinging    = false;
            }
        }