Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

Читать онлайн Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 179 180 181 182 183 184 185 186 187 ... 206
Перейти на страницу:

  MsgBox("Тест выполнен")

  ListBox1.Items.Add( _

   PerformanceSampling.GetSampleDurationText(TEST_NUMBER))

 Else

  MsgBox("При выполнении теста возникали осложнения")

 End If

End Sub

'==================================================

'Осуществляет многократные вызовы простой функции и

'измеряет общее время выполнения.

'Вызываемая функция ВОЗБУЖДАЕТ исключения

'==================================================

Private Sub buttonRunExceptionCode_Click_Click(ByVal senderAs System.Object, _

 ByVal e As System.EventArgs) Handles buttonRunExceptionCode_Click.Click

 Const TESTNUMBERAs Integer = 1

 'Получить количество итераций Dim numberItterationsAs

 Integer numberItterations = _

  CInt(textBoxNumberAttempts.Text)

 'Отобразить количество итераций, которые надлежит выполнить

 ListBox1.Items.Add("=>" + numberItterations.ToString() + " итераций")

 Dim count_SumLessThanZero As Integer

 Dim dataOut As Integer

 '----------------

 'Запустить таймер

 '----------------

 PerformanceSampling.StartSample(TEST_NUMBER, "Перехват исключения")

 '------------------------------------------------------

 'Выполнить цикл, в котором осуществляется вызов функции

 '------------------------------------------------------

 count_SumLessThanZero = 0

 Dim sumGreaterThanZero As Boolean

 Dim i As Integer

 While (i < numberItterations)

  Try

   '=========================

   'Вызвать тестовую функцию!

   '=========================

   sumGreaterThanZero = _

    exceptionIfLessThanZero_Add2Numbers(-2, -3, dataOut)

  Catch

   count_SumLessThanZero = count_SumLessThanZero + 1

  End Try

  i = i + 1

 End While 'конец цикла

 '-----------------

 'Остановить таймер

 '-----------------

 PerformanceSampling.StopSample(TEST_NUMBER)

 '--------------------------------

 'Показать результаты пользователю

 '--------------------------------

 If (count_SumLessThanZero = numberItterations) Then

  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"))

 'Добавить изображения в коллекцию

 s_colPlayerBitmaps = New System.Collections.ArrayList

 s_colPlayerBitmaps.Add(s_Player_Bitmap1)

 s_colPlayerBitmaps.Add(s_Player_Bitmap2)

 s_colPlayerBitmaps.Add(s_Player_Bitmap3)

 s_colPlayerBitmaps.Add(s_Player_Bitmap4)

 'Возвратить коллекцию

 Return s_colPlayerBitmaps

End Function

Private Shared s_blackPen As System.Drawing.Pen

Private Shared s_whitePen As System.Drawing.Pen

Private Shared s_ImageAttribute As _

 System.Drawing.Imaging.ImageAttributes

Private Shared s_boldFont As System.Drawing.Font

'------------------------------------------------

'Вызывается для освобождения от любых графических

'ресурсов, которые могли быть кэшированы

'------------------------------------------------

Private Shared Sub g_CleanUpDrawingResources()

 'Освободить память от черного пера, если таковое имеется

 If Not (s_blackPenIs Nothing) Then

  s_blackPen.Dispose()

  s_blackPen = Nothing

 End If

 'Освободить память от белого пера, если таковое имеется

 If Not (s_whitePenIs Nothing) Then

  s_whitePen.Dispose()

  s_whitePen = Nothing

 End If

 'Освободить память от атрибута ImageAttribute, если таковой имеется.

 'Примечание. Метод Dispose() для этого типа не предусмотрен,

 'поскольку все его данные являются управляемыми

 If Not (s_ImageAttribute Is Nothing) Then

  s_ImageAttribute = Nothing

 End If

 'Освободить память от полужирного шрифта, если таковой имеется

 If Not (s_boldFontIs Nothing) Then

  b_boldFont.Dispose()

  s_boldFont = Nothing

 End If

End Sub

'-----------------------------------------

'Эта функция позволяет получить доступ

'к черному перу, находящемуся в кэш-памяти

'-----------------------------------------

Private Shared Function g_GetBlackPen() As System.Drawing.Pen

 'Если перо еще не существует, создать его

 If (s_blackPen Is Nothing) Then

  s_blackPen = New System.Drawing.Pen( _

   System.Drawing.Color.Black)

 End If

 'Возвратить черное перо

 Return s_blackPen

End Function

'----------------------------------------

'Эта функция позволяет получить доступ

'к белому перу, находящемуся в кэш-памяти

'----------------------------------------

Private Shared Function g_GetWhitePen() As System.Drawing.Pen

 'Если перо еще не существует, создать его

 If (s_whitePen Is Nothing) Then

  s_whitePen = New System.Drawing.Pen( _

   System.Drawing.Color.White)

 End If

 'Возвратить белое перо

 Return s_whitePen

End Function

'-----------------------------------------------

'Эта функция позволяет получить доступ

'к полужирному шрифту, находящемуся в кэш-памяти

'-----------------------------------------------

Private Shared Function g_GetBoldFont() As System.Drawing.Font

 'Если перо еще не существует, создать его

 If (s_boldFont Is Nothing) Then

  s_boldFont = New System.Drawing.Font( _

  System.Drawing.FontFamily.GenericSerif, 10, System.Drawing.FontStyle.Bold)

 End If

 'Возвратить полужирный шрифт

 Return s_boldFont

End Function

'-----------------------------------------------------

'Эта функция позволяет осуществлять доступ

'к находящемуся в кэш-памяти объекту imageAttributes,

'который мы используем для изображений с прозрачностью

'-----------------------------------------------------

Private Shared Function g_GetTransparencyImageAttribute() As _

 System.Drawing.Imaging.ImageAttributes

 'Если объект не существует, создать его

 If (s_ImageAttributeIs Nothing) Then

  'Создать атрибут изображения

1 ... 179 180 181 182 183 184 185 186 187 ... 206
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре.
Комментарии