当前位置: 首页>>代码示例>>VB.NET>>正文


VB.NET GC.SuppressFinalize方法代码示例

本文整理汇总了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
开发者ID:VB.NET开发者,项目名称:System,代码行数:101,代码来源:GC.SuppressFinalize

输出:

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
开发者ID:VB程序员,项目名称:System,代码行数:61,代码来源:GC.SuppressFinalize


注:本文中的System.GC.SuppressFinalize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。