Шрифт:
MsgBox("Тест выполнен")
ListBox1.Items.Add( _
PerformanceSampling.GetSampleDurationText(TEST_NUMBER))
Else
MsgBox("При выполнении теста возникали осложнения")
End If
End Sub
Примеры к главе 8 (производительность и память)
Листинг 8.1. Применение отложенной загрузки, кэширования и освобождения графических ресурсов
Option Strict On
Public Class GraphicsGlobals
Private Shared s_Player_Bitmap1 As System.Drawing.Bitmap
Private Shared s_Player_Bitmap2 As System.Drawing.Bitmap
Private Shared s_Player_Bitmap3 As System.Drawing.Bitmap
Private Shared s_Player_Bitmap4 As System.Drawing.Bitmap
Private Shared s_colPlayerBitmaps As _
System.Collections.ArrayList
'----------------------
'Освободить все ресурсы
'----------------------
Public Shared Sub g_PlayerBitmapsCollection_CleanUp
'Если не загружено ни одно изображение, то и память освобождать не от чего
If (s_colPlayerBitmapsIs Nothing) Then Return
'Дать указание каждому из этих объектов освободить
'любые удерживаемые ими неуправляемые ресурсы
s_Player_Bitmap1.Dispose
s_Player_Bitmap2.Dispose
s_Player_Bitmap3.Dispose
s_Player_Bitmap4.Dispose
'Обнулить каждую из этих переменных, чтобы им не соответствовали
'никакие объекты в памяти
s_Player_Bitmap1 = Nothing
s_Player_Bitmap2 = Nothing
s_Player_Bitmap3 = Nothing
s_Player_Bitmap4 = Nothing
'Избавиться от массива
s_colPlayerBitmaps = Nothing
End Sub
'-----------------------------------------
'Функция: возвращает коллекцию изображений
'-----------------------------------------
Public Shared Function g_PlayerBitmapsCollection _
As System.Collections.ArrayList
'---------------------------------------------------------------
'Если изображения уже загружены, их достаточно только возвратить
'---------------------------------------------------------------
If Not (s_colPlayerBitmaps Is Nothing) Then
Return scolPlayerBitmaps
End If
'Загрузить изображения как ресурсы из исполняемого двоичного файла
Dim thisAssemblyAs System.Reflection.Assembly = _
System.Reflection.Assembly.GetExecutingAssembly
Dim thisAssemblyNameAs System.Reflection.AssemblyName = _
thisAssembly.GetName
Dim assemblyNameAs String = thisAssemblyName.Name
'Загрузить изображения
s_Player_Bitmap1 =New System.Drawing.Bitmap( _
thisAssembly.GetManifestResourceStream(assemblyName _
+ ".Hank_RightRun1.bmp"))
s_Player_Bitmap2 = New System.Drawing.Bitmap( _
thisAssembly.GetManifestResourceStream(assemblyName _
+ ".Hank_RightRun2.bmp"))
s_Player_Bitmap3 = New System.Drawing.Bitmap( _
thisAssembly.GetManifestResourceStream(assemblyName _
+ ".Hank_LeftRun1.bmp"))
s_Player_Bitmap4 = New System.Drawing.Bitmap( _
thisAssembly.GetManifestResourceStream(assemblyName _
+ ".Hank_LeftRun2.bmp"))