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

Шрифт
Интервал

стр.

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

>Public Sub LoopAndAttemptIRSend()

> Dim irDASender As System.Net.Sockets.IrDAClient

> Dim streamOutToIrDA As System.IO.Stream

> Dim streamInFromFile As System.IO.Stream

> 'Пользователь пока что не отменил выполнение операции

> m_wasSenderStopped = False

> setStatus(SendStatus.AttemptingToSend)


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

> 'Непрерывное выполнение цикла, пока не удастся отправить сообщение

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

> While (True)

>  'Значения всех этих переменных должны быть нулевыми до и после

>  'вызова sendStream(...), если не было сгенерировано исключение!

>  irDASender = Nothing

>  streamOutToIrDA = Nothing

>  streamInFromFile = Nothing


>  'Попытаться передать поток

>  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


> '==========================================

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

> '==========================================


стр.

Похожие книги