簡體   English   中英

通過Excel代碼關閉C#對象

[英]Closing C# object through excel code

我已經用VBA代碼(Excel)創建了C#庫的COM對象。 此C#庫將所有消息記錄在日志文件中。 我已經在finally方法中編寫了一些代碼,希望每次我通過excel關閉對象時都調用它。 但是,每當我通過excel關閉對象時,它都不會調用finally方法中可用的代碼。 請提出我應該如何通過excel強制調用final代碼。

您實際上希望將“最終”代碼放入類析構函數中 一旦編寫了此代碼,它將在沒有該類實例的情況下執行。 VBA(因此是VB6)本身沒有垃圾收集器,但是它確實使用引用計數自動對其進行清理。 當內存中對某個對象的引用為0時,將執行該對象的析構函數並將其銷毀。
這將如何運作? 當您創建對象的實例是1引用時: Set MyClass = New SomeClass當該變量設置為無時,引用計數遞減為0。這可以通過兩種方式進行:

  • 手動: Set MyClass = Nothing
  • 或功能/子結束時。 該變量超出范圍,因此引用計數器遞減,對象被破壞。

  • 如果您的VBA類對象在作用域中是本地的(在過程中聲明),那么您真的不需要執行任何操作來確保析構函數運行,它將在過程結束時自動執行。 如果它是VBA類模塊中的模塊級變量,則在銷毀VBA類的實例時,其所有模塊級變量都將被銷毀,並且析構函數將運行。 如果將其作為標准模塊中的public / global變量使用,則在關閉宿主應用程序時將其銷毀。 本質上,它的行為類似於VBA中的Class_Terminate事件。

    希望有幫助!

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM