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

ЖАНРЫ

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

Dim bSuccess As Boolean

Try

bSuccess = sendStream(mjdescriptionOfLastSendAttempt, _

streamOutToIrDA, irDASender, streamInFromFile)

Catch eUnexpected As System.Exception 'Неожиданная ошибка!!!

setStatus(SendStatus.Finished_Error) 'Уведомить о сбое

m_descriptionOfLastSendAttempt = _

"Unexpected error in IR send loop. " + eUnexpected.Message

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

'Освободить все распределенные нами ранее ресурсы

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

If Not (streamOutToIrDA Is Nothing) Then

Try

streamOutToIrDA.Close

Catch

'Поглотить любую ошибку

End Try

streamOutToIrDA = Nothing

End If

If Not (streamInFromFile Is Nothing) Then

Try

streamInFromFile.Close

Catch

'Поглотить любую ошибку

End Try

streamInFromFile = Nothing

End If

If Not (irDASender Is Nothing) Then

Try

irDASender.Close

Catch

'Поглотить любую ошибку

End Try

irDASender = Nothing

End If

Return 'Выход

End Try

'Проверить успешность выполнения

If (bSuccess = True) Then

m_descriptionOfLastSendAttempt = "Success!"

setStatus(SendStatus.Finished Successfully)

Return

End If

'Проверить, не была ли операция отменена пользователем

If (m_wasSenderStopped = True) Then

m_descriptionOfLastSendAttempt = "User Aborted."

setStatus(SendStatus.Finished_Aborted)

Return

End If

'В противном случае... Нам пока не удалось обнаружить сервер IrDA,

'имя которого совпадает с именем службы. Мы продолжим выполнение цикла

'и попытаемся найти сервер.

End While

'Мы никогда не попадем в это место программы при выполнении

End Sub

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

'Попытаться передать поток ввода-вывода (например, файл) посредством IR

'[возвращаемое значение]:

' true: успешная передача файла

' false: файл не был успешно передан

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

Private Function sendStream(ByRef errorDescription As String, _

ByRef streamOutToIrDA As System.IO.Stream, _

ByRef irDASender As System.Net.Sockets.IrDAClient, _

ByRef streamInFromFile As System.IO.Stream) As Boolean

errorDescription = ""

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

'Создание нового клиента IRDA

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

Try

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

'Возврат произойдет довольно быстро. Клиент будет выбран

'и возвращен, если прослушивающие клиенты отсутствуют.

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

irDASender = _

New System.Net.Sockets.IrDAClient(m_IrDAServiceName)

Catch eCreateClient As System.Exception

'В данном случае могли возникнуть несколько ситуаций:

'#1: отсутствуют прослушивающие устройства

'#2: прослушивающее устройство существует, но не реагирует

' (может отказаться от разговора)

errorDescription = eCreateClient.Message

Return False

End Try

данном случае могли возникнуть несколько ситуаций:

'#1: Мы получили соединение от приемного устройства IR

'#2: IR-запрос был отменен (кто-то вызвал функцию STOP).

If (m_wasSenderStopped = True) Then

irDASender.Close

irDASender = Nothing

Return False

End If

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

'ПЕРЕДАТЬ ДАННЫЕ!

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

'Открыть файл, который мы хотим передать

streamInFromFile = System.IO.File.OpenRead(m_fileToSend)

'Открыть сокет IrDA, которому мы хотим передать данные

streamOutToIrDA = irDASender.GetStream

Const BUFFER_SIZE As Integer = 1024

Поделиться с друзьями: