如何引用变量并将变量传递给DLL库

时间:2017-05-10 14:15:37

标签: vb.net dll

有人可以用正确的方法帮助我。假设我们有一个可以在多个应用程序中使用的模块。

Public Function releaseObject(ByVal obj As Object)
    Try
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
        obj = Nothing
    Catch ex As Exception
        obj = Nothing
    Finally
        GC.Collect()
    End Try
End Function

我假设不是在每个应用程序中输入它,而是每次都可以创建一个dll并引用它。这会是什么程序?

  • 在VS

  • 中创建一个类库
  • 添加以下代码:

    Public Class releaseObject
    ''' <summary>
    ''' releasing objects
    ''' </summary>
    ''' <param name="obj">Object</param>
    Public Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub
    

    结束班

  • 在未来的应用中构建和引用dll?在代码中使用它的正确方法是什么?我想如何将参数传递给dll?

所以在我的情况下,我将dll保存为a_releaseVars。在我添加对另一个应用程序的引用后,我可以看到

a_releaseVars.releaseObject

但是一旦我传递了对象

a_releaseVars.releaseObject(obj)

它表示它是一种类型,不能用作表达式。

感谢任何帮助。

谢谢。

亚历

1 个答案:

答案 0 :(得分:1)

这里有一个例子: 图书馆名为ClassLibrary1

Public Class RelObject
    Public Sub ReleaseObj(ByRef obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            Throw new Exception(e.Message)
        End Try
    End Sub
End Class

<强> PROGRAMM

Imports ClassLibrary1

Public Class Form1
    Dim tb As New Object
    Dim at As New RelObject
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        at.ReleaseObj(tb)
    End Sub
End Class

你应该看看ByVal&amp; ByRef使用并查看你的Try Catch Block,这对我来说没什么用。我也可以讨论调用GC.Collect那里,你正在强制GC.Collect那里,可能不需要。垃圾收集器是一个巨大的主题,值得一些关于它如何工作的读物以及我们何时需要与它进行交互。 在您的示例中,您使用的是类而不是类的方法,这就是您收到错误的原因