在子线程中动态创建了一个时钟,当在子线程的时钟OnTimer事件调用WaitForMultipleObjects阻塞子线程时,结果连主线程也阻塞了。按说时钟是在子线程中创建的,应该和主线程无关,为什么会导致主线程也死掉呢?

解决方案 »

  1.   

    http://ivyswen.blog.hexun.com/16258079_d.htmlWaitForMultipleObjects解释,希望有帮助
      

  2.   

    OnTimer事件代码是在主线程里跑的,所以在OnTimer事件代码里WaitForMultipleObjects,会让主线程挂起。
      

  3.   

    这个应该是vcl的问题,他们是非现成安全的。你这样做很有问题。
    如果非要等待什么你获取可以用守护线程的方法来做,也就是说你另做一个线程来做TIMER;
      

  4.   


    我分析好像也是这个原因,TTimer在Create的时候需要传入一个这样的参数:AOwner: TComponent,我传了一个Application进去。
    问题现在换了一种方式解决,我在主线程里产生时钟中断,然后在子线程中创建一个Event来标识这种状态。