我正在我的应用程序中实现同步方法。它将执行的主要步骤是:
逻辑非常复杂,但本身工作正常。
问题是当我尝试在单独的线程中运行它时。我很清楚,在我的逻辑中,我没有正确地获得线程安全。
所以让我们分开它
I - 使用 TidHTTP
获取内容没有任何问题,如果我有任何疑虑吗?
II - 对于 IXMLDomDocument2 我正在调用
CoInitializeEx(nil, 0);
根据the documentation应足以安全地使用 IXMLDomDocument2 。它似乎没问题,添加后我尝试使用它时没有任何错误。还有什么值得关注的吗?
III - 安全使用Firebird
我的问题在这里。有时候它有效,有时候它没有(我猜这是设计糟糕的线程逻辑的主要症状)。大多数情况下,我收到EInterbaseError,并显示消息“从连接读取数据时出错”。其他时候它只是锁定。
我是否应该与数据库建立单独的连接?
答案 0 :(得分:2)
Warren指出了在后台和前台线程之间共享连接的主要问题......你有另一个问题,那就是每次调用CoInitialize都需要与CoUninitialize配对
http://msdn.microsoft.com/en-us/library/windows/desktop/ms688715(v=vs.85).aspx