【发布时间】:2009-11-28 19:18:21
【问题描述】:
我有旧版 COM 组件,我的任务是编写 Web 服务来包装 COM 并启用并发非阻塞调用。
首先,因为COM对象本身是无状态的,所以我决定使用[ThreadStatic]属性,这样每个线程都会有自己的COM对象实例,以防止使用lock {}语句并启用真正的并发处理,但似乎所有调用仍然同步进行。
我编写了一个测试代码,该代码运行 COM 组件中与 for { } 循环同步的方法,然后添加了第二个线程,该线程执行完全相同的操作,但添加到 COM 对象的另一个实例,我没有看到任何变化,X 调用无论线程数如何,总是消耗 Y 时间跨度。好像有个静态锁什么的……
尽管如此,单独的进程实际上可以同时处理每个调用。是什么阻止了不同的线程表现相同?
如何才能启用对 COM 组件的真正并发调用?
【问题讨论】:
标签: c# .net multithreading com legacy