FIX: CHRSAW() Function Can Cause System to Stop Responding When AutoYield = .F. (297826)



The information in this article applies to:

  • Microsoft Visual FoxPro for Windows 5.0
  • Microsoft Visual FoxPro for Windows 5.0a
  • Microsoft Visual FoxPro for Windows 6.0

This article was previously published under Q297826

SYMPTOMS

If the Visual FoxPro AutoYield property is set to .F., the CHRSAW() function may not be able to check the keyboard buffer properly, and may cause the system to stop responding (hang).

CAUSE

The AutoYield property prevents Windows event messages from interrupting program flow. Therefore, when CHRSAW() checks to see whether any keyboard events have come in, it can get into a state in which it continues to look for an event, but can't find one.

STATUS

This problem was corrected in Microsoft Visual FoxPro version 7.0 for Windows.

MORE INFORMATION

Steps to Reproduce Behavior

The following code will eventually reproduce the behavior, although perhaps not on the first run. If you open the Task Manager, you will see that Visual FoxPro is taking all available CPU time.
*!* Q297826 FIX: CHRSAW() Function Can Hang System When AutoYield = .F.
CLEAR

_VFP.AutoYield = .F.
lnCount = 1000
lnStart = SECONDS()

FOR lnI = 1 TO lnCount
	@ 1,1 SAY lnI
	llTest = CHRSAW()
ENDFOR

? SECONDS() - lnStart
				

Modification Type:MajorLast Reviewed:10/16/2002
Keywords:kbBug kbCodeSnippet kbDSupport kbvfp700fix KB297826