在C#中的VisualFoxPro应用程序上使用Quit()时出现问题

时间:2017-04-27 22:02:12

标签: c# visual-foxpro

我创建了一个WebAPI Web服务,接受来自旧版Visual FoxPro系统的请求。该服务需要解析请求,然后启动VFP运行时以执行一些传统的FoxPro代码以实际处理"处理"请求。

我有一些像这样的代码:

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应用程序仍然处于运行状态。

如何确保在每个Web请求结束时关闭VFP?

更新

我刚刚再次测试并意识到第一个代码块不会抛出错误。相反,它只是挂起服务器。但是,如果我在foxApp.DoCmd("clear all")之前添加foxApp.Quit(),则会收到错误消息:

Cannot clear the object OPANEBROWSER because it is in use.

我的所有代码都没有引用OPANEBROWSER对象,我不知道它来自何处。

1 个答案:

答案 0 :(得分:1)

知道了!

我在服务器上安装了VFP9.0 SP2,技术上,我正在启动应用程序。在我的开发环境中,我总是禁用MS默认弹出的任务管理器窗格。但是,我没有在服务器VFP环境中这样做。

一旦我在VFP环境中禁用了任务管理器,以至于它没有显示在VFP的开头,一切都很好。