Grails JsonViews: передача переменных модели из действия с использованием response не заполняет модель в представлении gson

Хотя выбранный ответ обеспечивает хороший способ отображения MessageBox из асинхронного потока, он не обрабатывает случай, когда вы хотите извлечь DialogResult из показанного MessageBox.

Если вы хотите вернуть DialogResult из вызываемого MessageBox, отображаемого поверх Form. Затем вам нужно использовать делегат Func вместо делегата Action.

Action делегаты всегда возвращают void, тогда как Func имеет возвращаемое значение.

Вот небольшой метод, который я разработал для обработки этого конкретного сценария:

private DialogResult BackgroundThreadMessageBox(IWin32Window owner, string text)
{
   if (this.InvokeRequired)
   {
      return (DialogResult) this.Invoke(new Func(
                             () => { return MessageBox.Show(owner, text); }));
   }
   else
   {
      return MessageBox.Show(owner, text);
   }
}

Хотя это обычно не считается лучшей практикой или дизайном, он будет работать в крайнем случае.

0
задан WILLIAM WOODMAN 18 January 2019 в 10:08
поделиться