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

> 'Имя сокета IrDA, поиск которого мы хотим осуществить

> m_IrDAServiceName = irdaServiceName

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

> m_fileToSend = fileToSend

>End Sub


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

>'Запускает новый поток для осуществления попытки отправки файла

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

>Public Sub LoopAndAttemptIRSendAsync()

> 'Мы находимся в режиме передачи

> setStatus(SendStatus.AttemptingToSend)

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

> m_wasSenderStopped = False


> 'Это функция, которую должен запустить на выполнение новый поток

> Dim threadEntryPoint As System.Threading.ThreadStart

> threadEntryPoint = _

>  New System.Threading.ThreadStart(AddressOf LoopAndAttemptIRSend)


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

> 'Создать новый поток и запустить его

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

> Dim newThread As System.Threading.Thread = _

>  New System.Threading.Thread(threadEntryPoint)


> newThread.Start()

> 'Вперед!

>End Sub


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

>'Входит в цикл и пытается передать файл посредством IR

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

>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