如何:通过使用 ShowDialog 方法显示 Windows 窗体来支持 COM 互操作
可以通过在 .NET Framework 消息循环(它通过使用 Application.Run 方法创建)上显示 Windows 窗体,来解决组件对象模型 (COM) 互操作性的问题。
若要使窗体在 COM 客户端应用程序中正常工作,必须在 Windows 窗体消息循环上运行该窗体。 若要实现这一点,请使用下列方法之一:
使用 Form.ShowDialog 方法显示 Windows 窗体;
将每个 Windows 窗体显示在单独的线程上。 有关更多信息,请参见如何:通过在每个 Windows 窗体各自的线程上显示该 Windows 窗体来支持 COM 互操作。
过程
使用 Form.ShowDialog 方法可能是在 .NET Framework 消息循环上显示窗体的最简单方法,因为在所有方法中,该方法所需的实现代码最少。
Form.ShowDialog 方法挂起非托管应用程序的消息循环,并将窗体显示为对话框。 由于宿主应用程序的消息循环已挂起,因此 Form.ShowDialog 方法创建新的 .NET Framework 消息循环来处理窗体的消息。
使用 Form.ShowDialog 方法的缺点是窗体将作为模式对话框打开。 在 Windows 窗体打开期间,此行为将阻止调用应用程序中的任何用户界面 (UI)。 当用户从窗体退出时,.NET Framework 消息循环关闭,先前的应用程序的消息循环再次开始运行。
可以在 Windows 窗体中创建一个具有显示窗体的方法的类库,然后为 COM 互操作 生成该类库。 可以从 Visual Basic 6.0 或 Microsoft 基础类 (MFC) 中使用此 DLL 文件,在这两种环境中,都可以调用 Form.ShowDialog 方法来显示窗体。
通过用 ShowDialog 方法显示 Windows 窗体来支持 COM 互操作
- 用对 .NET Framework 组件中的 Form.ShowDialog 方法的调用来替换所有对 Form.Show 方法的调用。
请参见
任务
如何:通过在每个 Windows 窗体各自的线程上显示该 Windows 窗体来支持 COM 互操作