Как сделать, чтобы повторный MessageBox не выводился? - C#
Формулировка задачи:
Извиняюсь, если не совсем правильно сформулировал вопрос.
Есть таймер, который дергает функцию
Как сделать, чтобы пока сообщение на экране, новый MessageBox по данному объекту не показывать? Если в цикле появился новый объект,которого нет, его выводим.
При этом на MessageBox должно идти время обратного отсчета на 1 минуту, по истечении времени, оно должно само закрываться. Но это уже другой вопрос.
private void MonitoringTime()
{
List <GDataGridRow> rows = dataGrid.Rows.FindAll(x => ((MonitoringSite)x.Key).Before < Utils.Time.TimeUtils.UnixToDate(Utils.Time.TimeUtils.ServerUnixTime));
if (rows != null)
{
for(int i =0; i < rows.Count; i++)
{
MessageBox.Show("Истекло время для " + ((MonitoringSite)x.Key).Name);
}
}
}
Буду признателен любому совету. Заранее спасибо.
Решение задачи: «Как сделать, чтобы повторный MessageBox не выводился?»
textual
Листинг программы
private bool IsMessageBoxShowing;
private void MonitoringTime()
{
List <GDataGridRow> rows = dataGrid.Rows.FindAll(x => ((MonitoringSite)x.Key).Before < Utils.Time.TimeUtils.UnixToDate(Utils.Time.TimeUtils.ServerUnixTime));
if (rows != null)
{
for(int i =0; i < rows.Count; i++)
{
// Если вы вызываете MonitoringTime(); один раз
// и условие для цикла выполнится, то сообщения будут выводить друг за другом.
// Если вам это нужно избежать, добавьте break; после соощения.
// Если вы вызываете метод параллельно, тогда будет только 1 сообщение.
if(!IsMessageBoxShowing) {
IsMessageBoxShowing = true;
MessageBox.Show("Истекло время для " + ((MonitoringSite)x.Key).Name);
IsMessageBoxShowing = false;
// break;
}
}
}
}