Как сделать, чтобы повторный 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;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д