2010-08-12 315 views
1

PostThreadMessage我的线程ID是正确的,但出现错误1444(“无效的线程标识符”)。PostThreadMessage将GetLastError设置为1444

任何人都知道如何解决它?

+4

你怎么知道你的线程ID是正确的?因为显然不是。 – GManNickG 2010-08-12 05:38:54

+2

0%的接受答案驱动了我的帮助动机。不。请接受以前问题的答案,也许有人会伸出援手! – 2010-08-12 05:42:04

+0

@GManNickG嗯,因为它是由Windows EnumProcess给出的,并且与任务管理器给出的id相匹配......至少在我的情况下,这很明显,至少在我的情况下,它确实匹配,我仍然得到这个错误。所以,显然你的错误意味着唯一的方法来获得错误是如果该ID是无效的。 – AbstractDissonance 2016-08-03 01:39:41

回答

3

操作系统是线程ID是否有效的权威,所以如果它告诉你你的ID无效,那么你的ID可能是无效的。你必须相信错误代码,直到你能证明它们是错误的,否则根本没有用处检查它们。在指责操作系统之前,确保你排除了所有其他可能性。下面是一些例子:

  • 也许你使用的线程手柄来代替。
  • 也许线程已经完成运行。
  • 也许线程没有成功创建。确保你检查CreateThread的返回值。
  • 也许线程属于运行在不同桌面上的进程。
  • 也许线程没有消息队列。例如,线程可以通过调用GetMessage或PeekMessage为自己创建一个消息队列。
+0

雅我现在使用getmessage .....现在工作 – SPB 2010-08-12 09:54:46

+0

顺便说一句,我通过阅读[PostThreadMessage'文档](http://msdn.microsoft.com/en-我们/库/ ms644946.aspx);它在整个地方提到了'ERROR_INVALID_THREAD_ID'。 – 2010-08-12 13:50:39