本文整理汇总了VB.NET中System.GC.SuppressFinalize方法的典型用法代码示例。如果您正苦于以下问题:VB.NET GC.SuppressFinalize方法的具体用法?VB.NET GC.SuppressFinalize怎么用?VB.NET GC.SuppressFinalize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.GC
的用法示例。
在下文中一共展示了GC.SuppressFinalize方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的VB.NET代码示例。
示例1: ConsoleMonitor
' 导入命名空间
Imports System.ComponentModel
Imports System.Runtime.InteropServices
Public Class ConsoleMonitor
Private Const STD_INPUT_HANDLE As Integer = -10
Private Const STD_OUTPUT_HANDLE As Integer = -11
Private Const STD_ERROR_HANDLE As Integer = -12
Private Declare Function GetStdHandle Lib "kernel32" _
(nStdHandle As Integer) As IntPtr
Private Declare Function WriteConsole Lib "kernel32" _
Alias "WriteConsoleA" _
(hConsoleOutput As IntPtr, lpBuffer As String,
nNumberOfCharsToWrite As UInteger,
ByRef lpNumberOfCharsWritten As UInteger,
lpReserved As IntPtr) As Boolean
Private Declare Function CloseHandle Lib "kernel32" _
(handle As IntPtr) As Boolean
Private disposed As Boolean = False
Private handle As IntPtr
Private component As Component
Public Sub New()
handle = GetStdHandle(STD_OUTPUT_HANDLE)
If handle = IntPtr.Zero Then
Throw New InvalidOperationException("A console handle is not available.")
End If
component = new Component()
Dim output As String = "The ConsoleMonitor class constructor." + vbCrLf
Dim written As UInteger = 0
WriteConsole(handle, output, CUInt(output.Length), written, IntPtr.Zero)
End Sub
Protected Overrides Sub Finalize()
If handle <> IntPtr.Zero Then
Dim output As String = "The ConsoleMonitor finalizer." + vbCrLf
Dim written As UInteger = 0
WriteConsole(handle, output, CUInt(output.Length), written, IntPtr.Zero)
Else
Console.Error.WriteLine("Object finalization.")
End If
' Call Dispose with disposing = false.
Dispose(false)
End Sub
Public Sub Write()
Dim output As String = "The Write method." + vbCrLf
Dim written As UInteger = 0
WriteConsole(handle, output, CUInt(output.Length), written, IntPtr.Zero)
End Sub
Public Sub Dispose()
Dim output As String = "The Dispose method." + vbCrLf
Dim written As UInteger = 0
WriteConsole(handle, output, CUInt(output.Length), written, IntPtr.Zero)
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Private Sub Dispose(disposing As Boolean)
Dim output As String = String.Format("The Dispose({0}) method.{1}",
disposing, vbCrLf)
Dim written As UInteger = 0
WriteConsole(handle, output, CUInt(output.Length), written, IntPtr.Zero)
' Execute if resources have not already been disposed.
If Not disposed Then
' If the call is from Dispose, free managed resources.
If disposing Then
Console.Error.WriteLine("Disposing of managed resources.")
If component IsNot Nothing Then component.Dispose()
End If
' Free unmanaged resources.
output = "Disposing of unmanaged resources."
WriteConsole(handle, output, CUInt(output.Length), written, IntPtr.Zero)
If handle <> IntPtr.Zero Then
If Not CloseHandle(handle) Then
Console.Error.WriteLine("Handle cannot be closed.")
End If
End If
End If
disposed = True
End Sub
End Class
Module Example
Public Sub Main()
Console.WriteLine("ConsoleMonitor instance....")
Dim monitor As New ConsoleMonitor
monitor.Write()
monitor.Dispose()
End Sub
End Module
输出:
ConsoleMonitor instance.... The ConsoleMonitor class constructor. The Write method. The ConsoleMonitor finalizer. The Dispose(False) method. Disposing of unmanaged resources. If the monitor.Dispose method is called, the example displays the following output: ConsoleMonitor instance.... The ConsoleMonitor class constructor. The Write method. The Dispose method. The Dispose(True) method. Disposing of managed resources. Disposing of unmanaged resources.
示例2: MainClass
' 导入命名空间
Imports System
Imports System.Drawing
Imports System.Data
Imports System.IO
Imports System.Collections
Imports System.Windows.Forms
Imports System.Drawing.Printing
Public Class MainClass
Shared Sub Main()
Dim file As New MyFile("c:\FinalizeDemo.txt")
' now, clear the reference to the object...
file.Dispose()
file = Nothing
' wait for the user to press return...
Console.WriteLine("Press Return to collect the garbage...")
' force a collect...
GC.Collect()
' wait for the user to quit...
Console.WriteLine("Press Return to quit...")
End Sub
End Class
Public Class MyFile
Implements IDisposable
Private stream As FileStream
Private isDisposed As Boolean
Public Sub New(ByVal filename As String)
stream = New FileStream("test.txt", FileMode.OpenOrCreate)
Console.WriteLine("Object " & GetHashCode() & " created.")
Console.WriteLine("Using file: " & filename)
End Sub
Public Sub Dispose() Implements System.IDisposable.Dispose
If isDisposed = True Then Return
stream.Close()
stream = Nothing
isDisposed = True
GC.SuppressFinalize(Me)
Console.WriteLine("Object " & GetHashCode() & " disposed.")
End Sub
Protected Overrides Sub Finalize()
Dispose()
Console.WriteLine("Object " & GetHashCode() & " finalized.")
End Sub
End Class