void Command_Network_Ping(PingDialog.Result result) { var replies = Task.Run(async () => { var strs = GetSelectionStrings().Select(async str => { try { using (var ping = new Ping()) { var reply = await ping.SendPingAsync(IPAddress.Parse(str), result.Timeout); return $"{str}: {reply.Status}{(reply.Status == IPStatus.Success ? $": {reply.RoundtripTime} ms" : "")}"; } } catch (Exception ex) { return $"{str}: {ex.Message}"; } }).ToList(); return await Task.WhenAll(strs); }).Result.ToList(); ReplaceSelections(replies); }
static public Result Run(Window parent) { var dialog = new PingDialog() { Owner = parent }; return dialog.ShowDialog() ? dialog.result : null; }