VB.Net测试对象是否存在

时间:2017-08-24 15:15:10

标签: vb.net

我有一个非常简单的VS 2013 Windows窗体应用程序,它由3 .vb页面组成 注意 - 我'继承了'这个应用程序,并没有自己开发它。

在一个页面上创建一个应用程序对象。

Dim oVFP As Object
oVFP = CreateObject("VisualFoxPro.Application")

' Set up application object settings
oVFP.DoCmd("SET EXCLUSIVE OFF")
<... and so on ...?  

在用户GUI表单上,我有一个EXIT按钮,其Click方法位于另一个.VB页面上 无论oVFP对象是否“正常”,都可以随时单击此EXIT。

由于用户可能在oVFP运行时单击“退出”按钮,我希望btnExit Click方法检查oVFP是否存在,如果存在,则终止它。

我试过了:

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
IF NOT oVFP is Nothing then
  oVFP.Quit()
  System.Runtime.InteropServices.Marshal.ReleaseComObject(oVFP)
  oVFP = Nothing
ENDIF

但由于oVFP是在另一个.vb页面上创建的,因此未使用btnExit方法在.vb代码页上定义。

如何在btnExit点击方法中测试应用程序对象oVFP,如果存在,则终止它。

非常感谢您的帮助/建议。

由于

1 个答案:

答案 0 :(得分:2)

在Windows窗体应用中,您不应该谈论网页,它不是网络应用。所以我假设你在谈论3个表单实例。

有很多可能性来检查。如果表单彼此了解,则可以公开一个表单的属性,无论FoxPro对象是否已加载。然后,另一个表单可以访问该属性并决定是否可以关闭该应用程序。

或者你可以创建一个静态(在VB中共享)成员,可以在系统范围内访问(假设你没有一个项目不相互了解的解决方案)。

或者,您可以引入一个暴露该信息的单例。非常接近静态的东西。

静态成员和单身人士有建筑上的缺点,但我不认为这对于有3种形式的应用来说是一个问题。

然而,通过使用正确的术语,您可能会谷歌其他方法。试试吧:

  

vb.net在表单之间共享信息