/// <summary> /// Перебирает значения столбца с IP-адресами в DataTable. /// Проверяет состояние в сети командой ping.send(host). /// </summary> /// <param name="dg">DataTable, переданный bindingSourse.</param> /// <param name="tableIndex">индекс таблицы 1-физических,2-виртуальных серверов</param> public async void DgStatus(DataTable dg, int tableIndex) { int label; if (dg.Rows.Count > 0) { foreach (DataRow row in dg.Rows) { label = tableIndex == 1 ? 6 : 7; string metka = row[label].ToString(); // метка об архиващии string elemStr = row[2].ToString(); // пингуемые IP if (metka == "0") // т.е., проверяемый сервер должен быть пропингован { if (elemStr != string.Empty) { row[5] = await PingAndUpdateAsync(new Ping(), elemStr); } } else { row[5] = ConvertImageToByte._disconnec(); } } } }
private async Task <byte[]> PingAndUpdateAsync(Ping ping, string ip) { byte[] x; try { var reply = await ping.SendPingAsync(ip); if (reply.Status == IPStatus.Success) { x = ConvertImageToByte._connection(); } else { x = ConvertImageToByte._disconnec(); } return(x); } catch { x = ConvertImageToByte._disconnec(); return(x); } }