vb6为什么我要无人值守执行并保留在内存集中?

时间:2011-04-18 22:24:25

标签: vb6 activex com+ mts

14年前,当我是一个绿色号角时,设置经典ASP的组件并不在我的工资等级中......但是,我已经回到了未来,我发现自己必须维护和编码使用COM对象的经典ASP项目。

现在我发现自己正在查看1999年到2001年的古代文章,我想知道是否有人对COM(ActiveX .dll)应该具有无人值守执行和保留在内存集中的原因有一个很好的答案? / p>

我还应该注意,网站的当前架构是这些.dll刚刚丢弃在服务器上(当然已注册)。我想知道COM +和MTS。我们现在坚持使用经典ASP(长篇故事)。但是,我希望能够快速地转向.NET。因此,如果我可以最大限度地减少当前架构的维护时间,那将是有帮助的。能否请你告诉我为什么要使用COM +和MTS?以及添加这些功能所涉及的内容。

1 个答案:

答案 0 :(得分:5)

无人参与执行可防止您的VB6二进制文件显示交互式对话框,即您的webclient无法查看或与之交互的服务器上的窗口

这可能是Msgbox()或运行时错误弹出窗口。标记无人参与执行时,会将运行时错误记录到Windows事件日志中。

保留在内存中可防止IIS(或您的主机)立即释放您的DLL。根据您的主机设置,DLL将保留在内存中并重复使用。某些主机(如IIS)将在一段时间后释放DLL。

另请参阅:You can configure the Unattended Execution option and the Retained In Memory option in the latest version of Msvbvm60.dll

  

您必须打开无人值守   执行选项和保留   编译前的内存选项   托管Microsoft Visual Basic   适用于Windows 6.0的企业版   组件(Microsoft ActiveX DLL)中的   多线程环境,如   Microsoft Transaction Server   (Mtx.exe),Internet信息   服务(Inetinfo.exe),COM +   (Dllhost.exe)和Microsoft SQL   Server 7.0或SQL Server 2000   (Sqlservr.exe的)。但是,你可能不会   知道一个组件是否会发生   在这样的环境中使用或你   可能忘记打开无人值守   执行选项和保留   内存选项。解决这个问题   问题,最新版本的   Visual Basic运行时(Msvbvm60.dll)   介绍了一个允许的新功能   你打开无人值守   执行选项和保留   运行时的内存选项。

并且:Threading issues with Visual Basic 6.0 ActiveX components

  
      
  • MSVBVM60.DLL中的访问冲突。
  •   
  • 客户端进入死锁状态。如果是Visual,您可能会看到这两种症状   基本ActiveX DLL托管在   多线程环境,用于   例如,IIS,MTS或多线程   客户端和内存保留   选项未启用。
  •   

当然还有:Visual Basic Reference General Tab (Project Properties Dialog Box)

  

无人参与执行表示该项目旨在运行   没有用户互动。无人值守   项目没有界面元素。   任何运行时函数,如   通常导致用户的消息   交互被写入事件   日志中。

     

保留在内存中将项目保留在内存中。但是,有一个   绩效成本:保留一个项目   在内存中没有卸载,直到   流程终止。