我有一个应用程序使用三个辅助线程从数据库中读取(3个不同的表,总共约160,000行),从这些行创建对象,然后将对象添加到两个列表中的一个取决于创建的对象类型。辅助线程通过SendMessage调用将对象添加到列表中,以便主线程是添加到/从列表中删除的唯一对象。SendMessage - 奇怪的返回值
奇怪的是,SendMessage并不总是成功,我会经常得到这两个错误ERROR_ALREADY_EXISTS(183)和ERROR_TRUSTED_DOMAIN_FAILURE(1788)。 SendMessage调用的函数只是将一个对象添加到列表中,并且此函数始终返回成功(0)。没有创建文件(如ERROR_ALREADY_EXISTS似乎建议),并且没有网络调用,所以我不知道为什么我收到ERROR_TRUSTED_DOMAIN_FAILURE错误。
关于什么可能导致这些错误或任何方式来调试这些错误的任何想法?
作为一个说明,在它是SendMessage之前,我使用PostMessage并且会得到大量的ERROR_NOT_ENOUGH_QUOTA错误; SendMessage使公用事业工作更好。
如果我做PostMessage,我仍然可以使用GetLastError()吗?我喜欢线程安全的数组方法,谢谢。 – riqitang 2015-03-31 15:49:31
@HansPassant你是什么意思?它说,我仍然处理“非排队传入消息”(是其他SendMessage()?)的部分? – andlabs 2015-03-31 16:02:25
这只适用于工作线程创建自己的窗口并具有消息队列的情况。这里不太可能适用。 – 2015-03-31 16:20:19