我有一个在 dotnet 中使用的 COM 对象,我必须始终在同一个线程上调用它。问题在于,从概念上讲,它在整个程序中是针对多种事物的。确保在这个特定的后台线程上调用此对象的所有使用的最佳方法是什么?示例代码会很棒。
最佳答案
您可以在程序启动时启动一个线程,它应该处理所有 COM 交互。然后你可以有一个包装器对象,它将任务推送到队列中以供线程处理。
包装器可以包含同步代码,以便向调用者隐藏多线程(即,将包装的调用公开为同步方法)。
如果这是一个 WinForms 项目,也许您可以通过简单地使用 GUI 线程和 Control.Invoke 方法来偷工减料。 (但如果调用需要很长时间,这不是一个好主意,因为您会在调用期间阻塞 UI)。
关于c# - 使用来自一个特定线程的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741781/