Я пинговаю около 10-15 ips в своей сети (телефоны сотрудников), чтобы выставить дисплей, если они находятся в офисе, из нашего офисКод lags UI, но я не понимаю, как использовать фоновый рабочий для задачи, требующей ввода
у меня есть таймер, который имеет 5000 мс клеща, который пинает из пинга на все IP-адреса
Я пытался сделать фон рабочим или протектор, но проблема в том, что они, кажется, либо 1) не хотят принимать переданные параметры или 2) не имеют доступа к элементам управления обновлением
private void Check()
{
foreach (StatusBox sb in flowLayoutPanel1.Controls)
{
Ping pingSender = new Ping();
PingReply reply = pingSender.Send(sb.IPaddress, 10);
if (reply.Status == IPStatus.Success) //device found update last seen
{
sb.Color = Color.Green;
sb.lastseen = DateTime.Now.ToLongTimeString();
sb.lastseenDate = DateTime.Now;
}
else
{
if (sb.lastseenDate != Convert.ToDateTime("1/1/0001 12:00:00 AM")) //no date means device has not been found yet
{
if (sb.lastseenDate.AddMinutes(10) < DateTime.Now)
{
sb.Color = Color.Yellow;
}
else if (sb.lastseenDate.AddHours(1) < DateTime.Now)
{
sb.Color = Color.LightGray;
}
}
}
}
бы я называю это с внутренней стороны BackgroundWorker или нить? – Crash893
вы вызываете функцию из любого места, где бы вы ни захотели, так как у вас есть ссылка на ваш контроль winform ... Но функция будет в вашей winform :) Если вы используете фонового работника, есть пример в ссылке о том, как сделай это –