R. Stegeman
2007-08-22 05:58:01 UTC
In our application we have long runs that can last several minutes or even
hours.
We are not using a separate thread for these runs, but instead, during the
run we periodically call a function to process at least some of the messages
that are on the message queue using PeekMessage calls with message filters
(yes, this is an old-win32-style approach, but making the application
multi-threaded is not really an option for us right now).
This approach worked fine on all previous window versions, but NOT on Vista!
Vista decides after some time that our application is not responding. In
fact Vista is right about that, but what I don't like is that as soon as the
application is marked as "not responding", it seems that WM_TIMER and
WM_PAINT messages are no longer send. And this means that in our application
no progress is shown anymore.
Does anyone have a solution for this problem?
If I use a PeekMessage without filtering, Vista will not mark the
application as "not responding", but then our application should start
checking very carefully which messages are allowed during this long run (for
example to prevent re-entrance of code).
Is there a specific message that Vista is sending to an application to
decide whether it is still responsive? I have tried all kind of message
tracing, but could not find the message that is triggering this.
hours.
We are not using a separate thread for these runs, but instead, during the
run we periodically call a function to process at least some of the messages
that are on the message queue using PeekMessage calls with message filters
(yes, this is an old-win32-style approach, but making the application
multi-threaded is not really an option for us right now).
This approach worked fine on all previous window versions, but NOT on Vista!
Vista decides after some time that our application is not responding. In
fact Vista is right about that, but what I don't like is that as soon as the
application is marked as "not responding", it seems that WM_TIMER and
WM_PAINT messages are no longer send. And this means that in our application
no progress is shown anymore.
Does anyone have a solution for this problem?
If I use a PeekMessage without filtering, Vista will not mark the
application as "not responding", but then our application should start
checking very carefully which messages are allowed during this long run (for
example to prevent re-entrance of code).
Is there a specific message that Vista is sending to an application to
decide whether it is still responsive? I have tried all kind of message
tracing, but could not find the message that is triggering this.