Некоторые из наших нетехнических пользователей сталкиваются с проблемами, когда диалог MessageBox в нашем приложении иногда может отображаться за основной формой, и приложение не принимает никаких ввода до тех пор, пока сообщение (которое они не видят) будет уволено.
Приложение написано на С#, а окна сообщений являются стандартными, например, код может быть таким же простым, как MessageBox.Show(сообщение, подпись) и сообщениями могут быть созданы с помощью основного потока пользовательского интерфейса (то есть не какого-либо фонового потока). Приложение не нужно запускать полноэкранным, но 90% наших пользователей запускают его на весь экран.
В большинстве случаев ((возможно, > 99%) сообщения отображаются правильно, и я никогда не видел, как это происходит неправильно, но я видел машину, когда она пошла не так.
Одна вещь, которую я заметил, это то, что если у вас есть приложение, которое отображает диалоговое окно, то при просмотре вашего диспетчера задач вы обычно видите только одну запись в списке приложений. Всякий раз, когда ящик сообщений скрыт, вы увидите две записи: одну для основного приложения и другую запись для этого окна сообщений.
Легко решить проблему, как только вы знаете, что произошло, но некоторые из наших нетехнических пользователей запутались в этом и в конечном итоге отключили свои компьютеры. (И те, кто использует Remote Desktop, еще более запутаны, если это не решает проблему).
Я не думаю, что это связано с операционной системой, поскольку я видел это в Vista, и мне сказали, что это также происходит в терминальном сеансе на сервере Windows 2003.
Знаете ли вы, почему это происходит, и что еще важнее, если что-то можно сделать, чтобы избежать этого?