Чтение онлайн

на главную - закладки

Жанры

Программирование мобильных устройств на платформе .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
рейтинг книги
Имперец. Том 4

Совок 2

Агарев Вадим
2. Совок
Фантастика:
альтернативная история
7.61
рейтинг книги
Совок 2

Кровь и Пламя

Михайлов Дем Алексеевич
7. Изгой
Фантастика:
фэнтези
8.95
рейтинг книги
Кровь и Пламя

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Внешняя Зона

Жгулёв Пётр Николаевич
8. Real-Rpg
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Внешняя Зона

Приручитель женщин-монстров. Том 1

Дорничев Дмитрий
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Шесть тайных свиданий мисс Недотроги

Суббота Светлана
Любовные романы:
любовно-фантастические романы
эро литература
7.75
рейтинг книги
Шесть тайных свиданий мисс Недотроги

Измена. Мой непрощённый

Соль Мари
2. Самойловы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Мой непрощённый

Внешники

Кожевников Павел
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Внешники

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач