我有一些代码可以与一些COM dll和ActiveX控件进行交互,然后获取一些结果。我试图在另一个线程的后台运行这段代码。
但是我有一个问题,如果我使用UI线程来实现这一点,应用程序就会被阻塞,但是这个操作所需的时间大约是5-6秒。
如果我将这段代码移动到后台线程中,UI将保持响应性,但花费的时间几乎是10-11秒的两倍。我所做的没有什么不同,但是否有什么具体的原因,这需要更多的时间。
到目前为止还不能输入任何代码。我也尝试增加线程优先级。这没什么用。
谢谢
发布于 2014-04-16 03:42:19
您可能应该对此进行分析,以查看后台线程的执行何时实际开始,以及实际的时间消耗是什么--开始到完成。有很多相当不错的分析工具可以帮你做到这一点。请记住,当您创建一个单独的线程时,这并不意味着它在那一刻就会启动。还有一些东西可能会打断它(比如优先级更高的东西)。另外,当您在UI线程上执行它时,它具有UI线程的优先级:您将后台线程设置为什么优先级?正如DeveloperGuo所建议的,您可能应该在后台线程上实例化COM对象:如果该对象不需要挂起,那么使该线程完全负责COM对象和它所使用的其他资源,并为您的程序代码的其余部分提供更高级别的抽象API,通常会更干净、更高效。这些只是一般性的建议--如果不看代码,就无法得到更具体的建议。
https://stackoverflow.com/questions/22469802
复制相似问题