有人可以用正确的方法帮助我。假设我们有一个可以在多个应用程序中使用的模块。
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)
它表示它是一种类型,不能用作表达式。
感谢任何帮助。
谢谢。
亚历
答案 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那里,可能不需要。垃圾收集器是一个巨大的主题,值得一些关于它如何工作的读物以及我们何时需要与它进行交互。 在您的示例中,您使用的是类而不是类的方法,这就是您收到错误的原因