首先说,WM_ANIMATION_MESSAGE,这样在工作者线程中发送界面消息是有问题的。这个消息同样被发送到主窗口的消息环中,和按钮响应消息进行排队,逻辑上不合理。几次你的提问,一直没有完整的需求框架描述,这样有点乱。涉及界面重绘显示的线程,通常采用UI线程,不过这个相对复杂了不少。
在线程内部结束是正确的方法,外部终止工作者线程并不合理,可能造成内存泄露或资源耗尽。从上面代码看不到太多信息,除了发现SendMessage操作了主界面,就是你for内部又加了一个for,这样中断也不会立刻发生,延时将近或超过2秒。还有就是WAIT_TIMEOUT的逻辑应该是用反了。
没有理解线程的编程思想,生硬的做代码确实会很乱。线程的东西,从逻辑和框架上都有不同,因为不清楚你的总体设计和逻辑,猜不出太多东西,帮不到太多。