Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'необходимости генерации исключений в процессе передачи данных
'-----------------------------------------------------------------
#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
Листинг 15.3. Тестовый код, который необходимо поместить в класс формы для тестирования передачи и приема данных посредством механизма IrDA
'Имя, которое мы хотим присвоить сокету 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
<
Поделиться:
Популярные книги
Конструктор
1. Переломный век
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Афганский рубеж
1. Рубеж
Фантастика:
попаданцы
альтернативная история
7.50
рейтинг книги
Колючка для высшего эльфа или сиротка в академии
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Имперец. Том 4
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Совок 2
2. Совок
Фантастика:
альтернативная история
7.61
рейтинг книги
Кровь и Пламя
7. Изгой
Фантастика:
фэнтези
8.95
рейтинг книги
Третий
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Внешняя Зона
8. Real-Rpg
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Камень
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Шесть тайных свиданий мисс Недотроги
Любовные романы:
любовно-фантастические романы
эро литература
7.75
рейтинг книги
Измена. Мой непрощённый
2. Самойловы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Внешники
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Зауряд-врач
1. Зауряд-врач
Фантастика:
альтернативная история
8.64