Практическое руководство. Поддержка COM-взаимодействия путем отображения формы Windows Forms с помощью метода ShowDialog
Проблемы COM-взаимодействия можно устранить, отображая форму Windows Form в цикле обработки сообщений .NET Framework, который создан с помощью метода Application.Run.
Чтобы исправить работу формы из клиентского приложения COM, необходимо запустить его в цикле обработки сообщений Windows Forms. Для этого воспользуйтесь одним из перечисленных ниже подходов.
Используйте метод Form.ShowDialog для отображения формы Windows Form.
Отображайте каждую форму Windows Forms в отдельном потоке. Дополнительные сведения см. в разделе Практическое руководство. Поддержка COM-взаимодействия путем отображения каждой формы Windows Forms в отдельном потоке.
Процедура
Использование метода Form.ShowDialog может оказаться наиболее простым способом отображения формы в цикле обработки сообщений .NET Framework, поскольку среди всех методов он требует наименьшего объема кода для реализации.
Метод Form.ShowDialog приостанавливает цикл обработки сообщений неуправляемого приложения и отображает форму как диалоговое окно. Поскольку цикл обработки сообщений размещающего приложения приостановлен, метод Form.ShowDialog создает новый цикл обработки сообщений .NET Framework для обработки сообщений формы.
Недостатком метода Form.ShowDialog является то, что форма будет открыта как модальное диалоговое окно. Это поведение блокирует любой пользовательский интерфейс в вызывающем приложении, пока форма Windows Forms открыта. Когда пользователь выходит из формы, цикл обработки сообщений .NET Framework закрывается, а цикл обработки сообщений приложения возобновляет работу.
Можно создать библиотеку классов Windows Forms, которая имеет метод для отображения формы, а затем построить библиотеку классов для COM-взаимодействия. Можно использовать этот DLL-файл из Visual Basic 6.0 или Microsoft Foundation Classes (MFC), и из любой из этих сред можно вызвать метод Form.ShowDialog для отображения формы.
Для поддержки взаимодействия COM путем отображения формы Windows Forms с помощью метода ShowDialog, выполните следующие действия.
- Замените все вызовы метода Form.Show на вызовы метода Form.ShowDialog компонента .NET Framework.
См. также
Задачи
Основные понятия
Предоставление COM-клиентам доступа к компонентам .NET Framework