>'-----------------------------------------------------
>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
> '==========================================
> 'ПЕРЕДАТЬ ДАННЫЕ!
> '==========================================