C# 中 VisualFoxPro 应用程序的 Quit() 问题
Trouble with Quit() on VisualFoxPro Application within C#
我创建了一个 WebAPI 网络服务,它接受来自旧版 Visual FoxPro 系统的请求。该服务需要解析请求,然后启动 VFP 运行时,以便执行一些遗留 FoxPro 代码来实际 "process" 请求。
我有一些这样的代码:
try{
foxApp = new VisualFoxpro.FoxApplication();
foxApp.DoCmd(@"do hqinit with .T.");
...
foxApp.DoCmd("close all");
foxApp.DoCmd("release all");
foxApp.Quit();
}
catch{
...
}
foxApp.Quit()
不断抛出错误,FoxPro 应用程序仍然存在 运行(我可以在任务管理器中看到它)。
基于this SO post,我尝试了以下方法:
try{
foxApp = new VisualFoxpro.FoxApplication();
...
while(System.Runtime.InteropServices.Marshal.ReleaseComObject(foxApp) > 0) {}
但是,虽然我不再遇到尝试 foxApp.Quit()
时遇到的错误,但每次调用 Web 服务后 VFP 应用程序仍然存在 运行。
如何确保 VFP 在每个 Web 请求结束时关闭?
更新
我刚刚再次测试并意识到第一个代码块没有抛出错误。相反,它只是挂起服务器。但是,如果我在 foxApp.Quit()
之前添加 foxApp.DoCmd("clear all")
,我会收到一条错误消息:
Cannot clear the object OPANEBROWSER because it is in use.
None 我的代码引用了一个 OPANEBROWSER 对象,有些我不确定它来自哪里。
知道了!
我已经在服务器上安装了 VFP9.0 SP2,从技术上讲,我正在启动应用程序本身。在我的开发环境中,我总是禁用 MS 默认弹出的任务管理器窗格。但是,我没有在服务器VFP环境下这样做过。
一旦我在 VFP 环境中禁用任务管理器,使其不会在 VFP 启动时显示,一切都很好。
我创建了一个 WebAPI 网络服务,它接受来自旧版 Visual FoxPro 系统的请求。该服务需要解析请求,然后启动 VFP 运行时,以便执行一些遗留 FoxPro 代码来实际 "process" 请求。
我有一些这样的代码:
try{
foxApp = new VisualFoxpro.FoxApplication();
foxApp.DoCmd(@"do hqinit with .T.");
...
foxApp.DoCmd("close all");
foxApp.DoCmd("release all");
foxApp.Quit();
}
catch{
...
}
foxApp.Quit()
不断抛出错误,FoxPro 应用程序仍然存在 运行(我可以在任务管理器中看到它)。
基于this SO post,我尝试了以下方法:
try{
foxApp = new VisualFoxpro.FoxApplication();
...
while(System.Runtime.InteropServices.Marshal.ReleaseComObject(foxApp) > 0) {}
但是,虽然我不再遇到尝试 foxApp.Quit()
时遇到的错误,但每次调用 Web 服务后 VFP 应用程序仍然存在 运行。
如何确保 VFP 在每个 Web 请求结束时关闭?
更新
我刚刚再次测试并意识到第一个代码块没有抛出错误。相反,它只是挂起服务器。但是,如果我在 foxApp.Quit()
之前添加 foxApp.DoCmd("clear all")
,我会收到一条错误消息:
Cannot clear the object OPANEBROWSER because it is in use.
None 我的代码引用了一个 OPANEBROWSER 对象,有些我不确定它来自哪里。
知道了!
我已经在服务器上安装了 VFP9.0 SP2,从技术上讲,我正在启动应用程序本身。在我的开发环境中,我总是禁用 MS 默认弹出的任务管理器窗格。但是,我没有在服务器VFP环境下这样做过。
一旦我在 VFP 环境中禁用任务管理器,使其不会在 VFP 启动时显示,一切都很好。