Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
MOD is not correct
Message
From
24/07/2015 15:53:54
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows 7
Network:
Windows 2003 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01622479
Message ID:
01622484
Views:
65
>Hi Gang!
>
>Quick question....
>
>I have the code below....
>
>LOCAL llFileExists,lnCount
>llFileExists = .F.
>ltStart  = DATETIME()
>llExitLoop2 = .F.
>
>
>DO WHILE ((DATETIME() - ltStart) < 300) AND NOT llExitLoop2
>    IF MOD((DATETIME() - ltStart),1) = 0
>            WAIT "Waiting for file - " + UPPER(ALLTRIM(lcFileName)) + " - " + ;
>            STR( 300 - (DATETIME() - ltStart)  ,3,0) + " seconds remaining." WINDOW NOWAIT noclear
>      ENDIF
>            
>    IF FILE(ALLTRIM(lcFileName))
>        llFileExists = .T.
>        WAIT CLEAR
>        EXIT
>    ENDIF
>    DOEVENTS
>ENDDO
>
>and I want the WAIT WINDOW to NOT flicker !!!  But it does.   That is why I added the check for the MOD, so that the WAIT WINDOW would only be updated every 1 second....but it appears that the MOD is wrong and is true for more than each second.
>
>So, is my MOD wrong?  IF so, than what should I do to make it only update the WAIT WINDOW each second?
>
>Thanks!
>
Your DO loop runs at full speed for 5 minutes, which is unnecessary CPU usage even on a multi-core processor. If you do that without DOEVENTS, that can make it hard to switch away from the VFP app, making it seem like the entire computer is unresponsive (as you've probably discovered already).

I'd be inclined to use the Win32API Sleep function for this: http://news2news.com/vfp/index.php?group=-1&function=80

Within the main loop, call =Sleep( 1000 ) which will sleep for 1000 milliseconds (1 second). Then WAIT CLEAR, then update with a new WAIT WINDOW. No need for any seconds calculations within the loop. Also, you'll see CPU usage is much less. You may not even need DOEVENTS any longer, but if it turns out you do you're only calling it once per second instead of probably thousands of times per second.
Regards. Al

"Violence is the last refuge of the incompetent." -- Isaac Asimov
"Never let your sense of morals prevent you from doing what is right." -- Isaac Asimov

Neither a despot, nor a doormat, be

Every app wants to be a database app when it grows up
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform