' taken from Tutorial01.vbproj
' All objects in NetOffice which are based on CoClasses or Interfaces are wrapping
' COM Proxies. It's necessary to release a created COM Proxy by the client caller.
' This tells the COM Server (meaning your office application) that you do not need
' the instance any longer.
' In the MS Interop Assemblies you do that with Marshal.ReleaseComObject(object proxy)
' In NetOffice any object has the Method Dispose() to do that.
' An implemented Proxy Table in NetOffice makes it possible that you do not have
' to call Dispose() for any (implicitly) created object.
' This examples shows you how to use the Dispose() method to release an object
' and its created child objects.
' See chapter1 and chapter5 in technical documentation for further info.
Private Sub Tutorial01Main()
' NetOffice manages COM Proxies for you to avoid any kind of memory leaks
' and make sure your application instance removes from process list if you
' Initialize Api COMObject Support
' start application
Dim application As New Excel.Application()
application.DisplayAlerts = False
Dim book As Excel.Workbook = application.Workbooks.Add()
' now we have 2 new COM Proxies created.
' the first proxy was created while accessing the Workbooks collection
' from application. the second proxy was created by the Add() method from
' Workbooks and stored now in book with the application object we have
' 3 created proxies now. the workbooks proxy was created about application
' and the book proxy was created about the workbooks.
' NetOffice holds the proxies now in a list as follows:
' + Workbooks
' + Workbook
' any object in NetOffice implements the IDisposible Interface.
' use the Dispose() Method to release an object. the method release all
' created child proxies too.
' the application object is ouer root object
' dispose them release himself and any childs of application, in this
' case workbooks and workbook
' the excel instance are now removed from process list
MessageBox.Show(Me, "Done!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
See next: Tutorial02 -
Efficient using Dispose & DisposeChildInstances