One error is that you are creating the threads after you create the message queue, which presents the opportunity for the threads to try to use a garbage or null value for the queue handle/pointer. Nathan