sb.Append(" public void Ping(object o)\r\n");
sb.Append(" {\r\n");
sb.Append(" IPAddress<string> ip = (IPAddress<string>)o;\r\n");
sb.Append(" string stat = \"\";\r\n");
sb.Append(" try\r\n");
sb.Append(" {\r\n");
sb.Append(" List<long> stats = new List<long>();\r\n");
sb.Append(" do\r\n");
sb.Append(" {\r\n");
sb.Append(" long lat = ip.Latency(retry, timeout);\r\n");
sb.Append(" stats.Add(lat);\r\n");
sb.Append(" string message = null;\r\n");
sb.Append(" long mid = 0;\r\n");
sb.Append(" foreach (long l in stats.Where(v => v != long.MinValue))\r\n");
sb.Append(" mid += l;\r\n");
sb.Append("\r\n");
sb.Append(" if (stats.Count(v => v != long.MinValue) > 0)\r\n");
sb.Append(" {\r\n");
sb.Append(" mid = (mid / stats.Count(v => v != long.MinValue));\r\n");
sb.Append(" }\r\n");
sb.Append(" else\r\n");
sb.Append(" {\r\n");
sb.Append(" mid = 0;\r\n");
sb.Append(" }\r\n");
sb.Append("\r\n");
sb.Append(" long latenzMin = long.MinValue;\r\n");
sb.Append(" try\r\n");
sb.Append(" {\r\n");
sb.Append(" latenzMin = stats.Where(v => v != long.MinValue).Min();\r\n");
sb.Append(" }\r\n");
sb.Append(" catch { }\r\n");
sb.Append("\r\n");
sb.Append(" long latenzMax = long.MinValue;\r\n");
sb.Append(" try\r\n");
sb.Append(" {\r\n");
sb.Append(" latenzMax = stats.Where(v => v != long.MinValue).Max();\r\n");
sb.Append(" }\r\n");
sb.Append(" catch { }\r\n");
sb.Append("\r\n");
sb.Append(" stat = \"Pingstatistik für \" + ip + \":\" + Environment.NewLine +\r\n");
sb.Append(" \"\tPakete: Gesendet = \" + stats.Count + \", Empfangen = \" + stats.Count(v => v != long.MinValue) +\r\n");
sb.Append(" \", Verloren = \" + stats.Count(v => v == long.MinValue) +\r\n");
sb.Append(" Environment.NewLine;\r\n");
sb.Append(" if (latenzMax != long.MinValue && latenzMin != long.MinValue)\r\n");
sb.Append(" stat += \"Latenz:\" + Environment.NewLine + \"\tMinimum = \" + latenzMin + \"ms, Maximum = \" + latenzMax +\r\n");
sb.Append(" \"ms, Mittelwert = \" + mid + \"ms\";\r\n");
sb.Append("\r\n");
sb.Append(" if (lat == long.MinValue)\r\n");
sb.Append(" message = DateTime.UtcNow.ToString() + \" :> \" + ip.ToString() + \": \" + \"timeout\" + Environment.NewLine;\r\n");
sb.Append(" else\r\n");
sb.Append(" message = DateTime.UtcNow.ToString() + \" :> \" + ip.ToString() + \": \" + lat + \"ms\" + Environment.NewLine;\r\n");
sb.Append("\r\n");
sb.Append(" using (TextWriter tw2 = new StreamWriter(logDir + \"/\" + ip + \".log\", true))\r\n");
sb.Append(" {\r\n");
sb.Append(" tw2.Write(message);\r\n");
sb.Append(" }\r\n");
sb.Append(" WriteTextNew(message + \"|\" + stat + \"|\" + ip.ToString());\r\n");
sb.Append(" Thread.Sleep(interval);\r\n");
sb.Append(" } while (!stop);\r\n");
sb.Append(" }\r\n");
sb.Append(" catch (Exception e)\r\n");
sb.Append(" {\r\n");
sb.Append(" if (verbose)\r\n");
sb.Append(" ShowMessageBox(e.Message + Environment.NewLine + e.StackTrace + Environment.NewLine + Environment.NewLine +\r\n");
sb.Append(" e.InnerException, \"Exception thrown\", MessageBoxButtons.OK);\r\n");
sb.Append(" }\r\n");
sb.Append(" finally\r\n");
sb.Append(" {\r\n");
sb.Append(" try\r\n");
sb.Append(" {\r\n");
sb.Append(" using (TextWriter tw2 = new StreamWriter(logDir + \"/\" + ip + \".log\", true))\r\n");
sb.Append(" {\r\n");
sb.Append(" tw2.Write(Environment.NewLine + stat);\r\n");
sb.Append(" }\r\n");
sb.Append(" if (restart) File.Delete(logDir + \"/\" + ip + \".log\");\r\n");
sb.Append(" }\r\n");
sb.Append(" catch (Exception e)\r\n");
sb.Append(" {\r\n");
sb.Append(" if (verbose)\r\n");
sb.Append(" WriteText(e.Message);\r\n");
sb.Append(" }\r\n");
sb.Append(" }\r\n");
sb.Append(" }\r\n");