1

我们有一个在 Delphi XE 中开发的 Win32 COM 对象。从我们在 Delphi 中开发的测试程序中,我们能够在线程中启动 COM 对象。调试时,我们可以看到正在运行的 COM 对象位于调用例程创建的线程内。

在我们的 C# 应用程序中,这是一个使用与 Delphi 测试应用程序中相同的线程执行配方开发的服务,我们看不到相同的行为。COM 对象不在执行它的 C# 线程内运行。我们使用 Kernel32.dllGetCurrentThreadID()来获取 Windows 句柄。从我们的 COM 对象观察 Windows 线程句柄时,它始终是同一个句柄。这不是执行线程的句柄。

是否可以在 C# 线程中运行 COM 对象并让它存在于线程中?基本上,我们如何从 COM 对象中的 C# 线程获取相同的 Windows 线程处理程序?

我们的 C# 线程是 MTA。

/布莱恩

4

0 回答 0