Читать «Программирование мобильных устройств на платформе .NET Compact Framework» онлайн - страница 570
Иво Салмре
Dim irStreamIn As System.IO.Stream
Try
'=========================================================
'Задать и загрузить файл!
'=========================================================
internal_WaitForIRFileDownload(outputStream, irdaClient, irStreamIn)
Catch 'Поглотить любые возникающие ошибки
setStatus(ReceiveStatus.Done_ErrorOccured)
End Try
'=============================================
'Освободить все ресурсы
'=============================================
'Закрыть наш входной поток
If Not (irStreamIn Is Nothing) Then
Try
irStreamIn.Close()
Catch 'Поглотить любые возникающие ошибки
End Try
End If
'Закрытие клиента IrDA
If Not (irdaClient Is Nothing) Then
Try
irdaClient.Close()
Catch 'Поглотить любые возникающие ошибки
End Try
End If
'Закрыть файл, в который осуществлялась запись
If Not (outputStream Is Nothing) Then
Try
outputStream.Close()
Catch 'Поглотить любые возникающие ошибки
End Try
End If
'Закрыть прослушивающее устройство, если оно выполняется
If Not (m_irListener Is Nothing) Then
'Установить первым, чтобы код, выполняющийся другим потоком,
'был отменен, если он установлен
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
'Если прослушивание остановлено другим потоком, инициировавшим отмену
'выполнения, будет сгенерировано исключение и управление будет