微软MSDN在解释Application::DoEvents 方法时,说了一句话:
警告: |
---|
调用该方法可以在某消息引发事件时导致重新输入代码。
初看起来,不明白它在说什么.想了许久,才明白了. 原来,在软件设计中,有一个术语,叫“重入”,意思是说,程序在执行这段代码时,可以被其它线程或自身线程打断,再次从头执行这段代码。可重入代码是允许这样重入而程序不会有什么问题,与非重入执行是完全一样的。不可重入代码执行了重入时,会导致程序执行错误。 微软的这句话的意思是说,调用了Application::DoEvents 方法的事件处理程序必须是可重入代码。如果事件处理程序中会引发任意事件,则是对事件不可重入的,因为重入会导致進入无限的递归之中,导致程序崩溃。
|