Это решило все наши проблемы с графическим интерфейсом.
я есть приложение на C # (FFx 3.5), которое загружает библиотеки DLL как плагины. Эти плагины загружаются в отдельные домены приложений (по многим причинам, и эта архитектура не может измениться). Это все хорошо.
Теперь у меня есть требование показать диалог из одного из этих плагинов. Имейте в виду, что яне могу верните диалоговую форму в основное приложение и покажите ее там (текущая инфраструктура ее не поддерживает).
Ошибка 1
В моей DLL я создал форму и назвал Show. Контур диалога появился, но не рисовал, и он не реагирует на события мыши. Я предположил, что это потому, что DLL находится в отдельном домене приложений, а насос сообщений для приложения каким-то образом не может отправлять сообщения в новую форму.
Ошибка 2
В моей DLL я создал Form и назвал ShowDialog, который по всем правам должен создать внутренний диалог сообщений для диалога. Диалог отображается и отвечает на щелчки (ура), но кажется, что основное приложение больше не обрабатывает или отправка оконных сообщений, потому что он прекращает рисовать и больше не реагирует на события мыши. Почему-то сейчас кажется, что насос сообщений основного приложения не отправляет сообщения.
Ошибка 3
В моей DLL я создал форму и назвал Application.Run. Это, безусловно, создаст полный второй насос сообщений. Я получаю то же поведение, что и Failure 2 - диалоговое окно ведет себя, но вызывающее приложение - нет.
Любые мысли о том, что именно здесь происходит, и как я могу показать диалоговое окно из DLL другого AppDomain, чтобы и вызывающий, и вызываемый все еще отвечали и рисовали правильно?