Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework
- Название:Программирование мобильных устройств на платформе .NET Compact Framework
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2006
- Город:Москва • Санкт-Петербург • Киев
- ISBN:5-8459-0989-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework краткое содержание
Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Программирование мобильных устройств на платформе .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Get
If (m_germanGender = WordGender.notApplicable) Then
Return Me.GermanWord
End If
Return Me.GenderArticle + " " + Me.GermanWord
End Get
End Property
Public ReadOnly Property GenderArticle() As String
Get
Select Case (m_germanGender)
Case WordGender.Masculine
Return "der"
Case WordGender.Feminine
Return "die"
Case WordGender.Neuter
Return "das"
End Select
Return ""
End Get
End Property
Public Sub New(ByVal enlgishWord As String, ByVal germanWord _
As String, ByVal germanGender As WordGender, _
ByVal wordFunction As WordFunction)
m_englishWord = enlgishWord
m_germanWord = germanWord
m_germanGender = germanGender
m_wordFunction = wordFunction
End Sub
End Class
Примеры к главе 15 (передача данных)
Этот код представляет собой всего лишь последовательность вызовов функций. Программистам на VB будет несложно написать его, используя в качестве образца код на C#.
'Флаги условной компиляции для нашего инструментированного кода
#Const DEBUG_SIMULATE_FAILURES = 1 'Имитировать сбои
'#Const DEBUG_SIMULATE_FAILURES = 0 'Не имитировать сбои
'-----------------------------------------------------------------
'Глобальная переменная, которую мы хотим использовать для указания
'необходимости генерации исключений в процессе передачи данных
'-----------------------------------------------------------------
#If DEBUG_SIMULATE_FAILURES <> 0 Then
'Переменная для хранения информация о следующем сбое
Shared g_failureCode As SimulatedFailures = _
SimulatedFailures.noFailurePending
'Список сбоев, которые мы хотим имитировать
public enum SimulatedFailures
noFailurePending 'No test failures pending
'Имитируемые сбои:
failInNextWriteSocketCode
failInNextWebServiceCall
failInNextFileIODuringFileOpen
failInNextFileIODuringFileRead
'и так далее
End Enum
#End If 'DEBUG_SIMULATE_FAILURES
'---------------------------------------------------
'Функция, которую мы используем для передачи данных.
'---------------------------------------------------
Private Sub writeDataToSocket( _
ByVal mySocket As System.Net.Sockets.Socket, _
ByVal dataToSend() As Byte)
'------------------------------------------------------------------
'Этот код следует компилировать лишь при тестировании сетевых сбоев
'------------------------------------------------------------------
#If DEBUG_SIMULATE_FAILURES <> 0 Then
'Если это сбой, который мы хотим тестировать, генерировать исключение
If (g_failureCode = _
SimulatedFailures.failInNextWriteSocketCode) Then
'Сбросить этот сбой, чтобы он не возник
'при следующем вызове этой функции
g_failureCode = SimulatedFailures.noFailurePending
Throw New Exception("Test communications failure: " + _
g_failureCode.ToString())
End If
#End If
'Передать данные обычным образом.
mySocket.Send(dataToSend)
End Sub
'Имя, которое мы хотим присвоить сокету IrDA
Const myIrDASocketName As String = "IrDaTestFileTransmit"
Private Sub buttonTestFileSend_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles buttonTestFileSend.Click
'Создать простой текстовый файл, который мы хотим передать
Const fileName As String = "\myTestSendFile.txt"
Dim textFileStream As System.IO.StreamWriter
textFileStream = System.IO.File.CreateText(fileName)
textFileStream.WriteLine("Today...")
textFileStream.WriteLine("is а nice day")
textFileStream.WriteLine("to go swim")
textFileStream.WriteLine("in the lake")
textFileStream.Close()
Dim irdaFileSender As IrDAFileSend
irdaFileSender = New IrDAFileSend(fileName, myIrDASocketName)
'Имеется 2 режима: 1 - Sync (синхронный), 2 — Async (асинхронный)
'1. Вызвать функцию в синхронном режиме
'и блокировать поток выполнения до тех пор,
'пока файл не будет передан
'1a. Информировать пользователя о том, что мы пытаемся передать данные
Me.Text = "Trying to send..."
'Подождать, пока клиент не будет найден, а затем передать файл
irdaFileSender.LoopAndAttemptIRSend()
'1c. Информировать пользователя о том, что файл передан
MsgBox("File sent!")
Me.Text = "IrDA: Sent!"
'2. Вызвать функцию в асинхронном режиме и поручить
'передачу файла фоновому потоку
'irdaFileSend.LoopAndAttemptIRSendAsync()
'ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны
'периодически проверять, не завершила ли она выполнение, путем
'вызова метода 'irdaFileSend.Status'
End Sub
Private Sub buttonTestFileReceive_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles buttonTestFileReceive.Click
'Если файл назначения уже существует, уничтожить его
Const fileName As String = "\myTestReceiveFile.txt"
If (System.IO.File.Exists(fileName)) Then
System.IO.File.Delete(fileName)
End If
Dim irdaFileReceiver As IrDAFileReceive
irdaFileReceiver = New IrDAFileReceive(fileName, _
myIrDASocketName)
'Имеется 2 режима: 1 — Sync (синхронный), 2 - Async (асинхронный)
'1. Вызвать функцию в синхронном режиме
' блокировать поток выполнения до тех пор, пока
'файл не будет получен
'1a. Информировать пользователя о том, что мы ожидаем получения файла
Me.Text = "Waiting to receive..."
'1b. Ожидать, пока не будет сделана попытка установления с нами связи
'и передачи файла
irdaFileReceiver.WaitForIRFileDownload()
'1с. Информировать пользователя о том, что мы получили переданный файл
Me.Text = "IrDA: received!"
MsgBox("File received!")
'2. Вызвать функцию в асинхронном режиме и поручить
'получение файла фоновому потоку
'irdaFileReceive.WaitForIRFileDownloadAsync()
'ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны
'периодически проверять, не завершила ли она выполнение, путем
'вызова метода 'irdaFileReceive.Status'
End Sub
Option Strict On
'====================================================================
'Этот класс является клиентом IrDA. Он осуществляет поиск сервера
'IrDA, имя которого совпадает с именем службы IrDA, и после того, как
'он найден, направляет ему поток данных файла,
'====================================================================
Class IrDAFileSend
Private m_descriptionOfLastSendAttempt As String
Private m_IrDAServiceName As String
Private m_fileToSend As String
Private m_wasSenderStopped As Boolean
Public Enum SendStatus
AttemptingToSend
Finished_Successfully
Finished_Aborted
Finished_Error
End Enum
Private m_SendStatus As SendStatus
Public ReadOnly Property Status() As SendStatus
Get
'Блокировка выполнения параллельных операций чтения/записи в m_SendStatus
Интервал:
Закладка: