/** @file DkWxProcessingIdleController.h Avoid concurent idle handlers. Use code like this to avoid concurrent execution of idle handlers: @code class MyClass { protected: DkWxProcessingIdleController pcIdle; bool OnIdleNotConcurrent(wxIdleEvent & event); }; bool MyClass::OnIdleNotConcurrent(wxIdleEvent & event) { bool back = false; /* ... real idle processing here ... */ /* ... set back if you want to have further idle events ... */ return back; } void MyClass::OnIdle(wxIdleEvent & event) { bool wantMore = false; if(pcIdle.canBeginProcessing()) { wantMore = OnIdleNotConcurrent(event); endProcessing(); } else { wantMore = pcIdle.wantMore(); } if(wantMore) { event.RequestMore(); } event.Skip(); } @endcode Use the setWantMore() and resetWantMore() methods to indicate general interest in further idle events (i.e. a background thread is running and you want to update the window after the thread was finished). */