У меня есть Winform с DataGridView, содержащая несколько табличных значений от вызовов API к базе данных сервера. Я хочу обновить таблицу после опроса серверов, поэтому я использовал таймер для регулярного опроса серверов. Я не уверен, как заставить активную WinForm обновить его или заменить его, потому что у меня есть одна WinForm, которая запускается из класса "Program", и другая, которая запускается из моего класса "PollTimers", где конфигурация таймера и Бег имеет место. Вот мои методы: «UpdateTable» из моего класса «Form1», а «OnPollEvent» из «PollTimers».
public void UpdateTable(string id, string status, string ticketStatus)
{
foreach(DataGridViewRow row in dataGridView1.Rows)
{
if ((string)row.Cells[2].Value == id)
{
row.Cells[3].Value = status;
row.Cells[4].Value = ticketStatus;
}
}
dataGridView1.Update();
dataGridView1.Refresh();
}
private async void OnPollEvent(Object source, ElapsedEventArgs e)
{
Form1 f = (Form1)Application.OpenForms["Form1"];
Console.WriteLine("updating...");
foreach (Server server in Polls)
{
string json = await call.CallAsync(server.id);
dynamic convert = JsonConvert.DeserializeObject<RootObject>(json);
string ticketStatus = await call.TicketStatusAsync(server.id);
if (convert.status != "online")
{
Polls.Remove(server);
RePolls.Add(server, 0);
}
f.UpdateTable(server.id, convert.status, ticketStatus);
}
Console.WriteLine("updated.");
}