> 'Установить первым, чтобы код, выполняющийся другим потоком,
> 'был отменен, если он установлен
> m_wasListenerStopped = True
> Try
> m_irListener.Stop()
> Catch 'Поглотить любые возникающие ошибки
> End Try
> m_irListener = Nothing
> End If
>End Sub
>Private Sub internal_WaitForIRFileDownload( _
> ByRef outputStream As System.IO.Stream, _
> ByRef irdaClient As System.Net.Sockets.IrDAClient, _
> ByRef irStreamIn As System.IO.Stream)
> '---------------------------------------------------------
> 'Открыть входной файл для направления в него потока данных
> '---------------------------------------------------------
> outputStream = System.IO.File.Open( _
> m_fileNameForDownload, _
> System.IO.FileMode.Create)
> '==========================================
> 'ОБНОВЛЕНИЕ СОСТОЯНИЯ
> '==========================================
> setStatus(ReceiveStatus.NotDone_WaitingForSender)
> '---------------------------------
> 'Открыть прослушивающее устройство
> '---------------------------------
> Try
> m_wasListenerStopped = False
> m_irListener = _
> New System.Net.Sockets.IrDAListener(m_IrDAServiceName)
> m_irListener.Start()
> Catch eListener As System.Exception
> m_errorDuringTransfer = "Error creating listener - " + _
> eListener.Message
> GoTo exit_sub_with_error
> End Try
> 'Проверить, не поступила ли команда отменить выполнение
> If (m_wasListenerStopped = True) Then
> GoTo exit_sub_with_abort
> End If
> '------------------
> 'Принять соединение
> '------------------
> Try
> '--------------------------------------------------------------------
> 'Выполнение будет приостановлено здесь до тех пор, пока устройство не
> 'начнет передавать информацию, или не будет остановлен объект
> 'прослушивания, выполняющийся в другом потоке)
> '--------------------------------------------------------------------
> irdaClient = m_irListener.AcceptIrDAClient()
> Catch eClientAccept As System.Exception
> 'Если прослушивание остановлено другим потоком, инициировавшим отмену
> 'выполнения, будет сгенерировано исключение и управление будет
> 'передано сюда.
> If (m_wasListenerStopped = True) Then
> GoTo exit_sub_with_abort
> End If
> 'Если прослушивание не было прекращено,
> 'то произошло иное исключение. Обработать его.
> m_errorDuringTransfer = "Error accepting connection - " + _
> eClientAccept.Message
> GoTo exit_sub_with_error
> End Try
> 'В этом месте возможны два состояния:
> '#1: Мы получили соединение от передающего устройства IR
> '#2: IR-запрос был отменен (кто-то вызвал функцию STOP)
> ' (в этом случае приведенный ниже код сгенерирует исключение)
> 'Проверить, не было ли отменено выполнение