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