- Where Developers Learn, Share, & Build Careers
As part of my installer, I need to call a DBMS system and close it, and later After starting it. If DBMS is hanging for some reason, then my installer is hanging forever. I call Exec in the command that will start or stop the database, my question is:
What is the definition of ewWaitUntilIdle? If my command never comes back to start / stop the database, then what unnecessary condition does it take?
This is the exact code from sources of Inno:
process handle process Brick (Procedural: Thandal; Constant Wait: Texsevite; Constant Messaging Process: Tiprooceture; var Result Code: Integer); Wait if wait = ewWaitUntilIdle then repeat ProcessMessagesProc; Until WaitForInputIdle (Prosecutor, 50) & lt; & Gt; WAIT_TIMEOUT; End; Wait if wait = ewWaitUntilTerminated {Wait until the process is finished, but still process any incoming message. } Repeat {execute any pending message first, because MsgWaitForMultipleObjects (called below) only gives * new * message when it arrives] ProcessMessagesProc; Until MsgWaitForMultipleObjects (1, Prosecutor, False, INFINITE, QS_ALLINPUT) & lt; & Gt; WAIT_OBJECT_0 + 1; {In the case of messages once again, MessageWhofForm Multiblogged object terminated the process and new messages come together (unpublished messages can not wait, or waiting for a next call will not see them.) ProcessMessagesProc ; End; {Get exit code. If not yet available then STILL_ACTIVE will be set on} If not GetExitCodeProcess (ProcessHandle, DWORD (ResultCode)) then ResultCode: = -1; {End of the bus} CloseHandle (ProcessHandle); End; End; As you can see, ewWaitUntilIdle uses the WaitForInputIdle function - see more here:
Comments
Post a Comment