Моё приложение Visual FoxPro закрывается ... но все еще работает в диспетчере задач - PullRequest
1 голос
/ 28 июня 2011

Моя программа FoxPro имеет кнопку выхода и обычные кнопки min / max / X в правом верхнем углу, и при использовании любой из них программа исчезает и, кажется, закрылась должным образом.Однако, когда я проверяю свой диспетчер задач, я обнаруживаю, что он все еще работает.

Это мой файл main.prg:

ON SHUTDOWN CLEAR EVENTS
with _screen
.visible = .f.
endwith

DO FORM locations\form1
READ EVENTS
ON SHUTDOWN 

, и это код моего события нажатия кнопки выхода:

unlock all
close database all
clear events
RELEASE ALL
quit

Моя программа имеет толькоодна форма, и она установлена ​​на верхнем уровне ... какие-либо предложения относительно того, как я могу это исправить?

Спасибо за ваше время и помощь:)

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Если вы используете VFP из среды IDE (среда разработки) и выполняете _Screen.Visible = .F., Вы скрываете главный экран VFP, и система может возвращаться непосредственно к этому, и, поскольку вы можетене видите, вы не можете формально выйти.

В вашем MAIN.PRG поместите следующее внизу как отдельную «функцию», которая будет видна в стеке вызовов.

function CloseMyApp
   */ For now, just to "ignore" any errors of any dangling objects trying to get released
   */ and otherwise might be HIDING an error upon shutdown.
   on error *

   */ NOW, clear the event handler and close everything else down
   clear events
   close database all
   close tables
   on shutdown 

   quit
endfunc 

Затем, в начале, измените ON ON SHUTDOWN, чтобы вызвать эту «функцию» ... Сейчас вы запускаете только одну команду очистки событий.Таким образом, вы можете завершить кучу операций «очистки» перед закрытием, а не просто очистить события чтения.

ON SHUTDOWN Do CloseMyApp in Main.PRG
0 голосов
/ 11 августа 2011

Если вы нажмете кнопку «ВЫХОД» на форме (ваша кнопка), закроется ли форма и закроется ли приложение правильно?

Если это произойдет, ПРИНЯТИЕ, что кнопка называется «cmdExit», добавьте эту строку кСобытие 'UNLOAD' в форме

THISFORM.cmdExit.click ()

...