Я портирую старое приложение FoxPro на Visual FoxPro.Старая программа, конечно, не использовала никаких классов, но я начал использовать их для определенных случаев.Это вызвало проблему в цикле разработки, о которой я нигде не упоминал.
По сути, если я создаю объект на основе класса, определенного в файле процедуры, то FoxPro никогда не отпустит мое приложение.,Я не могу удалить его или восстановить его, и мне приходится перезапускать VFP каждый раз, когда я делаю изменения.
Шаги для воспроизведения.Сделайте a.prg
с
SET PROCEDURE TO b
m.test1 = CREATEOBJECT('TestClass')
RELEASE m.test1
и сделайте b.prg
с
DEFINE CLASS TestClass AS Control
ENDDEFINE
Создайте проект с именем a
:
MODIFY PROJECT a
И добавьте программуa.prg
.Тогда
BUILD APP a FROM a
DO a.app
DELETE FILE a.app
Последняя строка даст
Application file 'c:\...\b.fxp' is not closed
Затем, если вы попробуете DELETE
снова, он скажет
File access is denied c:\...\a.app
Я вижу вProcess Explorer, у которого vfp9.exe
есть дескриптор файла APP, который никогда не исчезнет, пока я не выйду из FoxPro, независимо от того, что я пытаюсь:
- УСТАНОВИТЬ ПРОЦЕДУРУ
- ЗАКРЫТЬ ВСЕ
- RELEASE ALL
- CANCEL
- CLEAR ALL
- до тошноты