c# - 使用来自一个特定线程的对象

标签 c# multithreading com

我有一个在 dotnet 中使用的 COM 对象,我必须始终在同一个线程上调用它。问题在于,从概念上讲,它在整个程序中是针对多种事物的。确保在这个特定的后台线程上调用此对象的所有使用的最佳方法是什么?示例代码会很棒。

最佳答案

您可以在程序启动时启动一个线程,它应该处理所有 COM 交互。然后你可以有一个包装器对象,它将任务推送到队列中以供线程处理。

包装器可以包含同步代码,以便向调用者隐藏多线程(即,将包装的调用公开为同步方法)。

如果这是一个 WinForms 项目,也许您可​​以通过简单地使用 GUI 线程和 Control.Invoke 方法来偷工减料。 (但如果调用需要很长时间,这不是一个好主意,因为您会在调用期间阻塞 UI)。

关于c# - 使用来自一个特定线程的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741781/

相关文章:

c# - Cookie 和 C# HttpWebRequest

c# - 在分层 SQL 数据库中查找所有父项

vba - VBA COM 库中的这些 _B_var_Xxxxx 和 _B_str_Xxxxx 成员究竟是什么?

linux - *nix 系统上是否有与 COM 等效的功能?如果不是,那么 *nix 的可重用性方法是什么?

python - 是否可以从 python 创建/编辑 excel 宏?

c# - 从C#应用程序使用自定义URL启动Web浏览器的最佳方法是什么?

C# 'unsafe' 函数 — *(float*)(&result) 与 (float)(result)

c++ - 使用 Boost.Lockfree 队列比使用互斥锁慢

php - 在 PHP Web 应用程序中处理多个出站 API 调用

c++ - 主线程无法从工作线程获取信号