2017-05-10 41 views
0

有人可以幫助我以正確的方式做到這一點。假設我們有一個可以在多個應用程序中使用的模塊。如何引用並將變量傳遞給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並每次引用它。這將是什麼程序?

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在未來的應用:

    • 在VS

    • 添加以下代碼創建一個類庫?在代碼中使用它的正確方法是什麼?我猜如何將參數傳遞給dll?

    所以在我的情況下,我將dll保存爲a_releaseVars。後我添加參考到其他應用我可以看到

    a_releaseVars.releaseObject 
    

    但是,一旦我傳球對象

    a_releaseVars.releaseObject(obj) 
    

    其說,它是一個類類型和不能老是被用作表達。

    任何幫助表示讚賞。

    謝謝。

    亞歷

  • +0

    你確定你想讓你的方法得到'ByVal'對象嗎?不應該是'ByRef'? – Pikoh

    回答

    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 &的ByRef用途,並期待在你的Try Catch Block中,我不會對我有很大的意義。我也可以討論在那裏調用GC.Collect,你正在強制GC.Collect,這可能不是必需的。垃圾收集器是一個巨大的主題,值得花點時間閱讀一下它是如何工作的以及我們什麼時候需要與它進行交互。 在你的例子中,你使用的是類,而不是類的方法,這就是爲什麼你得到錯誤

    +0

    謝謝你拉法。看起來像它的作品。代碼隨機挑選,只是一個樣本。 –

    +0

    太棒了!很好,它的工作原理,那麼你可以讓我的答案一樣好:)只是爲了讓你知道在複數視角你有這個主題很好的課程 –