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

>'Функция, которую мы используем для передачи данных.

>'---------------------------------------------------

>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'